当前位置: 技术问答>linux和unix
ssh调用远程主机的sh脚本,怎么按远程环境执行
来源: 互联网 发布时间:2017-01-17
本文导语: 远程机器B上的test.sh #!/bin/sh if [ -z "${JAVA_HOME}" ] then echo "Please set environment JAVA_HOME"; exit 1 fi echo "$JAVA_HOME" echo "test finished" exit 0 在B机器上直接运行./test.sh,结果 /usr/local/jdk1.6.0/ test finished 在A机...
远程机器B上的test.sh
#!/bin/sh
if [ -z "${JAVA_HOME}" ]
then
echo "Please set environment JAVA_HOME";
exit 1
fi
echo "$JAVA_HOME"
echo "test finished"
exit 0
在B机器上直接运行./test.sh,结果
/usr/local/jdk1.6.0/
test finished
在A机器上远程运行ssh root@hostnameB 'cd /usr/local/faster/facade-new/bin; ./test.sh'
结果:Please set environment JAVA_HOME
是ssh远程调用执行的环境变量不对,有哪些方法可以解决?请教
#!/bin/sh
if [ -z "${JAVA_HOME}" ]
then
echo "Please set environment JAVA_HOME";
exit 1
fi
echo "$JAVA_HOME"
echo "test finished"
exit 0
在B机器上直接运行./test.sh,结果
/usr/local/jdk1.6.0/
test finished
在A机器上远程运行ssh root@hostnameB 'cd /usr/local/faster/facade-new/bin; ./test.sh'
结果:Please set environment JAVA_HOME
是ssh远程调用执行的环境变量不对,有哪些方法可以解决?请教
|
ssh到B执行,应该还是用B的环境变量才是。
直接在B上执行,ssh到B上执行,两者的用户是否一致?
先排除不同用户的环境变更
直接在B上执行,ssh到B上执行,两者的用户是否一致?
先排除不同用户的环境变更
|
ssh 不会执行用户的登录过程,所以缺少环境变量
这样试试看
ssh root@hostnameB '. ~/.profile; cd /usr/local/faster/facade-new/bin; ./test.sh'
这样试试看
ssh root@hostnameB '. ~/.profile; cd /usr/local/faster/facade-new/bin; ./test.sh'
|
先设置从A ssh到B不需要密码,然后执行下面这个脚本试试
ssh root@hostnameB /bin/bash
ssh root@hostnameB /bin/bash