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

标签 bash shell ssh ubuntu-12.04

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

父壳:

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

我已经写了“退出”,但是控件没有返回到父脚本。
它卡在远程服务器上。...:(

最佳答案

罪魁祸首是您的调用代码中的bash -s行,该行仍期望输入使用ctrl-C结束:

尝试以下方法:

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

关于bash - ssh脚本不会将控制权返回给父脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22481371/

相关文章:

用于 shell 样式界面的 Ruby 句柄向上箭头

shell - 捕获shell输出时Chef编译错误

visual-studio-code - VScode 远程连接错误 : The process tried to write to a nonexistent pipe

php - Vesta CP 和 RoundCube 邮件数据库错误

bash - 使用 shell 脚本输出::::而不是实际字符来解析和存储 csv 文件的值

linux - if语句中的shell条件

bash - 在 bash 中,文件操作符 (-f) 可以不区分大小写吗?

bash - 引用传递给docker入口点的第一个参数?

shell - :- this symbol in unix shell scripting是什么意思

git - 同一设备上的多个 SSH key