Shell 捕获UNIX脚本中的SSH异常
我的服务器中有一个后台进程,它经常更新我的~/.ssh/authorized_密钥。如果我在同一时刻从我的客户机ssh,它将失败 $ssh我的服务器日期 SSH版本:OpenSSH_5.3p1 user@my_server的密码: ssh将在多次尝试后将脚本标记为失败 每当ssh出现故障时,我想中断并添加一个异常处理块,使其休眠30秒 差不多Shell 捕获UNIX脚本中的SSH异常,shell,unix,ssh,openssh,Shell,Unix,Ssh,Openssh,我的服务器中有一个后台进程,它经常更新我的~/.ssh/authorized_密钥。如果我在同一时刻从我的客户机ssh,它将失败 $ssh我的服务器日期 SSH版本:OpenSSH_5.3p1 user@my_server的密码: ssh将在多次尝试后将脚本标记为失败 每当ssh出现故障时,我想中断并添加一个异常处理块,使其休眠30秒 差不多 *ssh -o 'StrictHostKeyChecking no' appsrvr01.myserv.com "date" 2
*ssh -o 'StrictHostKeyChecking no' appsrvr01.myserv.com "date" 2> /tmp/error
if [ $? -ne 0 ]
then
echo -e "\n Please wait..\n\n"
sleep 1s
else
echo -e "\n The Environment is ready to use!\n\n"
exit 0
fi*
有没有更好的方法,因为上面的代码片段仍然会提示输入密码也许您可以在一个shell脚本中通过在锁文件上“flock”来实现这一点,然后在上面运行的shell脚本中“flock”来实现: 在更新授权密钥的脚本中:
(flock 200
# commands here that modify your authorized_keys file
) 200>/tmp/authkey_lock
围绕您在上面发布的脚本:
(flock 200
ssh -o 'StrictHostKeyChecking no' appsrvr01.myserv.com "date" 2> /tmp/error
if [ $? -ne 0 ]
then
echo -e "\n Please wait..\n\n"
sleep 1s
else
echo -e "\n The Environment is ready to use!\n\n"
exit 0
fi
) 200>/tmp/authkey_lock
有关flock的信息,请参阅“man flock”。为什么在此更新过程中登录失败?您不是自动替换文件吗?谢谢,但我无法控制将密钥更新为组级厨师脚本的脚本。我更关注的是如何优雅地退出ssh会议