有时,在连接到远程 SSH 服务器时,我会收到 Connection Closed By *IP*;无法读取数据包:连接被对等方重置。
但在尝试一两次后,它连接正确。
这对我用来自动将存档备份上传到 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
最佳答案
尝试这样的事情:
export SSHPASS=$sshpassword
sshpassFunc() {
sshpass -e sftp -oBatchMode=no -b - root@$sshaddress << !
cd $remotefolder
put $backupfolder/Qt_$date.sql.gz
bye
!
}
until sshpassFunc; do
sleep 1
done
(未测试)
关于linux - 循环直到连接到 SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9700726/