2017-09-25 53 views
2

我正在使用ssh从本地shell脚本运行远程shell脚本。下面是我的本地shell脚本中的代码:如何将状态码从远程运行的shell脚本返回到本地shell脚本

ssh [email protected]_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),这些语句可以在我的本地脚本中捕获,然后相应地采取行动。我怎样才能做到这一点?

回答

3

EOF块的退出代码将被传回到外壳。您可能遇到的问题是正在吞咽remote_shell_script.sh的退出代码。你可以通过几种方法解决这个问题。一个是exit与适当的退出代码。

ssh [email protected]_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 [email protected]_server remote_shell_script.sh; then 
    echo 'Script executed successfully'   
else    
    echo 'Script failed'    
fi