执行脚本里面系统自带的简单命令
比如有start.sh脚本文件,内容如下
打开一个exec的channel去执行 start.sh,通过打印getInputStream输入流的返回的结果可以看到脚本里面的命令都执行了
执行需要配置环境变量的命令
同样是有start.sh脚本文件,内容如下
注:第四行的 java -jar 如果执行了可以看到程序的进程并且在指定目录下生成日志文件。
打开一个exec的channel去执行 start.sh,通过打印getInputStream输入流的返回的结果可以看到脚本
里面的命令最后一行已经执行,但没有看到指定目录有日志文件生成,也就是说第四行的命令没有执行成功。
通过getErrStream去看有没有错误信息返回,却发现程序一直在等待,并没有任何错误信息输出,
于是放弃了。
仔细一想,是不是因为通过远程来执行脚本,对于配置环境变量是无感的,于是在脚本增加第四行,如下
再次通过channelExec执行start.sh脚本,发现第四行打印结果是空的,这印证了java的环境变量对于远程执行
是无效的,于是再修改脚本,增加了第二行,如下
再次通过channelExec执行start.sh脚本,发现第五行打印结果是配置的java环境变量路径,同时第六行也执行了
(看到程序的进程同时输出了日志文件),由此可以知道jsch在调用远程脚本文件时,如果包含需要配置环境
变量的命令时,需要先刷新系统环境变量文件。