我正在尝试创建一个连接到远程服务器并执行更新的脚本,但是我想确保当时没有人在使用计算机,因此我执行“ ps”命令查看该过程,然后提示如果安装应该继续。这是我尝试制作的代码:
ssh -T root@$machine <<- 'END'
#Show the non-root processes
ps -ef | grep -v root
#Prompt if should continue (this doesn't work)
echo "Continuar a instalação? [y/n]"
select valor in y n
do
case $REPLY in
y )
echo "Digitado y"
break
;;
n )
echo "Digitado n"
exit
;;
esac
done
#Test if it's working
echo "Test"
END
当我执行此代码时,我得到以下行为:
Continuar a instalação? [y/n]
1) y
2) n
#? 1) y
2) n
#? #? 1) y
2) n
#? #?
#? 1) y
2) n
#? #? #? 1) y
2) n
#? #? #? #?
然后脚本关闭。我尝试使用-t -t选项运行ssh,但仍然遇到相同的问题。我想念什么?
我决定将命令分成两个ssh连接,一个用于列出进程,另一个用于更新,并在它们中间提示继续:
ssh -T root@$machine <<- 'END1'
ps -ef | grep -v root | grep -v lightdm
END1
echo "Continuar a instalação? [y/n]"
select valor in y n
do
case $REPLY in
y )
break
;;
n )
exit
;;
esac
done
ssh -T root@$machine <<- 'END2'
printf "Test\n"
END2
问题是,它将要求您为ssh连接输入两次密码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句