【发布时间】:2012-03-14 19:29:28
【问题描述】:
有时在连接到远程 SSH 服务器时,我会收到 Connection Closed By *IP*; Couldn't read packet: Connection reset by peer.,但在尝试一两次后,它可以正常连接。
这给我用来自动将存档备份上传到 SSH 服务器的一些 bash 脚本带来了问题,就像这样;
export SSHPASS=$sshpassword
sshpass -e sftp -oBatchMode=no -b - root@$sshaddress << !
cd $remotefolder
put $backupfolder/Qt_$date.sql.gz
bye
!
在真正正确连接之前,我怎样才能让这部分循环?
更新:(解决方案)
RETVAL=1
while [ $RETVAL -ne 0 ]
do
export SSHPASS=$sshpassword
sshpass -e sftp -oBatchMode=no -b - root@$sshaddress << !
cd $remotefolder
put $backupfolder/Qt_$date.tgz
bye
!
RETVAL=$?
[ $RETVAL -eq 0 ] && echo Success
[ $RETVAL -ne 0 ] && echo Failure
done
【问题讨论】:
-
解决真正的问题,“coudln't read packet: connection reset by peer”。
-
即使我这样做了,我仍然想要一种方法来验证它是否已连接,如果未连接则循环...据我所知,服务器正在重新启动或出现网络问题在备份脚本从 cron 运行时。
-
@natli,您是否尝试在循环内连接?例如:
i=0; until ssh $user@$ip || [ $i -eq 10 ]; do sleep 1; (( i++ )); done