我正在使用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 here语句中返回一个状态代码(0,1),我可以在本地脚本中捕获这些语句然后采取相应的操作。我怎么能这样做?
答案 0 :(得分:3)
EOF块的退出代码将传递回外壳。您可能遇到的问题是,remote_shell_script.sh
的退出代码被吞下。你可以通过几种方式解决这个问题。一个是exit
,带有适当的退出代码。
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