如何将状态代码从远程运行的shell脚本返回到本地shell脚本

时间:2017-09-25 17:26:29

标签: linux bash shell

我正在使用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),我可以在本地脚本中捕获这些语句然后采取相应的操作。我怎么能这样做?

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