我正在使用ssh从本地shell脚本运行远程shell脚本。 以下是我的本地shell脚本中的代码:
ssh userid@remote_server '/bin/bash' << EOF if remote_shell_script.sh ; then echo 'Script executed successfully' else echo 'Script failed' fi EOF
上面的脚本工作正常。 但是我无法将状态码返回到本地可以使用的本地shell脚本。 我想在EOF..EOF里面返回一个状态码(0,1),这些语句可以在我的本地脚本中捕获,然后采取相应的措施。 我怎样才能做到这一点?
EOF块的退出代码将被传回到外壳。 您可能遇到的问题是remote_shell_script.sh
的退出代码正在被吞噬。 你可以解决这个问题。 一个是用适当的退出码退出。
ssh userid@remote_server '/bin/bash' << EOF if remote_shell_script.sh ; then echo 'Script executed successfully' exit 0 else echo 'Script failed' exit 1 fi EOF echo "Exit code = $?"
更简单的方法是将检查逻辑移到本地服务器。 在这种情况下,你甚至不需要这里的EOF文件。
if ssh userid@remote_server remote_shell_script.sh; then echo 'Script executed successfully' else echo 'Script failed' fi