我试图通过将其写入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/