我不信,难道连 sudo rm -rf /bin 也不会写?
如何运行shell脚本?
新手必知的问题,这里简单说下4种方式:
1.脚本所在目录执行
比如我现在有一个脚本叫test.sh,首先确保有执行权限,如果没有,需要赋予执行权限。
需要注意的是:如果shell脚本第一行申明了其他语言(比如python),但是正文是shell编程语言语法,那么将会报错。
补充一个知识点:
一个规范的Shell脚本在第一行会指出由哪个程序(解释器)来执行脚本中的内容,这一行内容在Linux bash的编程一般为:
#!/bin/bash
或者是
#!/bin/sh
2.脚本以绝对路径执行
比如你现在在/tmp目录下,你要执行家目录(/opt/testerzhang)下的test2.sh,那么我们就以绝对路径执行。
3.sh命令执行
我们可以用sh命令来执行具体的shell脚本,这种情况下,不需要赋予文件执行权限。
当然我们也可以将sh命令改成bash命令执行,也是可以的。
4.source命令或者点符号命令执行
看了上面4种方式,相信你已经了解了如何去运行一个shell脚本。
如何通过java远程调用linux命令或shell脚本?
这个非常简单,基本原理先通过ssh连接远程Linux主机,然后执行shell命令,获取返回结果,下面我简单介绍一下实现过程,主要内容如下:
1.首先,需要在maven中导入程序所依赖的Jar包,这个直接在pom.xml文件中输入就行,如下:
2.接着就可以用Java编程来实现远程连接Linux主机并执行shell命令或脚本了,主要步骤及截图如下:
-
首先,导入程序所依赖的包,初始化成员变量,这里定义了一个ExecuteShell类,创建对象时,需要输入IP地址、用户名和密码这3个参数,用于后面ssh连接远程Linux主机,代码如下,非常简单:
-
接着就是远程连接Linux主机了,测试代码如下,很好理解,创建一个Connection连接,如果连接成功,则返回true,失败则返回false:
-
连接成功后,我们就可以直接执行Linux shell脚本或命令了,测试代码如下,非常简单,打开一个Session会话,然后执行shell命令或脚本,返回执行结果:
processStdout函数代码如下,主要是取得shell命令和脚本返回的结果,代码如下:
-
最后,在main函数中创建ExecuteShell类对象,调用execute函数执行shell命令或脚本就行,如下:
点击运行程序,截图如下,已经成功执行shell,并取得返回的结果:
至此,我们就完成了利用Java来远程调用Linux命令或shell脚本。总的来说,整个过程非常简单,代码量也不多,很好理解,只要你有一定的Java基础,熟悉一下上面的代码和示例,多调试几遍程序,很快就能掌握的,网上也有相关教程和资料,非常丰富详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。