ssh脚本不会将控制权返回给父脚本

时间:2014-03-18 13:48:47

标签: bash shell ssh ubuntu-12.04

我试图通过将其写入ssh命令的标准输入来在远程服务器上执行本地脚本。该脚本运行正常,但ssh不会退出:它只是挂起,控件不会返回到父脚本。

父Shell:

for HOSTNAME in ${HOSTS} ; do
    ssh -t -t $HOSTNAME "bash -s" < ~backup_conf.sh 
done

被叫脚本:

#!/bin/sh    
AGENT_BASE_PATH=/home/lokesh

if [ -d "$AGENT_BASE_PATH/CI/DE_deployment/conf" ]; then 
        if [ -d "$AGENT_BASE_PATH/CI/temp/conf_bkup" ]; then 
            rm -rf $AGENT_BASE_PATH/CI/temp/conf_bkup
        fi  
        cp -R $AGENT_BASE_PATH/CI/DE_deployment/conf $AGENT_BASE_PATH/CI/temp/conf_bkup
fi
exit

我写了'exit'但控件没有返回到父脚本。 它挂在远程服务器.... :(

2 个答案:

答案 0 :(得分:1)

Culprit在您的调用代码中是bash -s行,仍然希望使用ctrl-C结束输入:

请改为尝试:

for HOSTNAME in ${HOSTS} ; do
    ssh -t -t $HOSTNAME "bash ~backup_conf.sh"
done

答案 1 :(得分:-2)

将退出状态写入远程主机上的文件,稍后使用ssh / scp / sftp从远程主机中选择它。

直接通过ssh,您将无法从其他主机获得退出状态。