Linux下使用远程ssh命令运行其他机器上的代码

想在机器A上远程运行机器B上的一条命令,如运行B上的ls,则可使用命令:

[email protected]:~$ ssh [email protected] 'ls'

如果想在机器A上远程运行机器B上的多条命令,可使用分号将多条命令分开,如:

[email protected]:~$ ssh [email protected] 'cd test; ls'

当然也可以运行机器B上的shell脚本,如机器B上的cyf用户目录下有一个test.sh的脚本,则可以:

[email protected]:~$ ssh [email protected] './test.sh'

[email protected]:~$ ssh [email protected] 'bash test.sh'

但是在远程运行机器B上的java程序Test的时候,出现了问题:

[email protected]:~$ ssh [email protected] 'java Test'

提示

bash: java: 未找到命令

而直接ssh [email protected]之后,再运行java Test正常

如果执行

[email protected]:~$ ssh [email protected] ‘env’

会发现没有java环境变量

这是因为ssh执行命令时是个短链接,没有打开终端,所以不会去加载.bashrc环境变量从而导致不识别java命令

解决方法:修改/etc/environment,在其中添加java路径

PATH="usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk/bin"

再次执行java程序Test,发现可以了

原创文章,作者:ifee,如若转载,请注明出处:https://www.ifee.win/blog/2021/05/07/linux%e4%b8%8b%e4%bd%bf%e7%94%a8%e8%bf%9c%e7%a8%8bssh%e5%91%bd%e4%bb%a4%e8%bf%90%e8%a1%8c%e5%85%b6%e4%bb%96%e6%9c%ba%e5%99%a8%e4%b8%8a%e7%9a%84%e4%bb%a3%e7%a0%81/

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注