我试图通过将其写入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'但控件没有返回到父脚本。 它挂在远程服务器.... :(
答案 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,您将无法从其他主机获得退出状态。