如何从本地Ubuntu系统执行远程服务器上的脚本时从远程Ubuntu服务器获取环境变量?我为不同文件中的vagrant用户配置了很多环境变量。
我使用以下命令从本地Ubuntu系统执行脚本
sshpass -f .passwd ssh -o StrictHostKeyChecking=no -t vagrant@192.168.1.180 "sh script.sh"
.passwd
文件包含密码
执行此脚本时,配置的环境变量不可用于脚本执行。我使用此命令获取了profile,.bash_profile,/ etc / profile等,例如。
sshpass -f .passwd ssh -o StrictHostKeyChecking=no -t vagrant@192.168.1.180 "source .bash_profile; sh script.sh"
请帮我解决这个问题。
注意:环境变量在直接ssh会话和脚本上也能正常工作。
答案 0 :(得分:1)
-i
和bash
的 sh
选项解决了这个问题。现在我能够在非交互式ssh连接中获得交互式ssh会话。
@marcolz @tripleee感谢您的帮助
sshpass -f .passwd ssh -o StrictHostKeyChecking=no -t vagrant@192.168.1.180 "bash -i script.bash"
答案 1 :(得分:0)
如果您将-l
传递给sh
,它的行为就像是登录shell一样,并会获取您的shell资源文件,所以请尝试:
sshpass -f .passwd ssh -o StrictHostKeyChecking=no -t vagrant@192.168.1.180 "sh -l script.sh"