linux - 循环直到连接到 SSH

标签 linux bash ssh

有时,在连接到远程 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/

相关文章:

ssh - Gcloud SSH 隧道代理始终通过美国,甚至来自其他地区

linux - 将文件添加到perl中的压缩文件夹

java - 在 Java 中执行 shell 脚本并读取输出

node.js - npm 本地依赖太多?

bash - 如何使用Shell脚本每4分钟在HDFS(Hadoop)上的目录中查找是否有新文件

regex - 使用 sed 在附加文本之前追加两个新行

linux - 通过 cygwin 上的 Expect 脚本使用 ssh

linux - 如何配置 lxc 2.0 配置文件以使用多个 overlayfs 下层?

linux - 如何使用 awk 仅对列范围求和?

linux - 如何使用 grep(或其他 LSB 工具)计算 .po 中的空翻译?