如何自动重试SFTP连接尝试?

时间:2015-09-25 17:28:10

标签: bash sftp

是否有选项让Bash重试SFTP连接n次或x秒?我无法找到有关使shell脚本自动重试的任何信息,无论错误原因(服务器已关闭,密码错误等)。

2 个答案:

答案 0 :(得分:2)

您可以使用until循环。

STAT=1

until [ $STAT -eq 0 ]; do 
   sftp user@host
   STAT=$?
done

上面的语法将继续,直到sftp成功,如果你需要一定次数,那么你可以使用while循环计数器。

counter=1
while [ $counter -gt 0 ]; do 
    sftp user@host
    counter=$(($counter-1))
done

答案 1 :(得分:1)

试试这次尝试三次:

c=0; until sftp user@server; do ((c++)); [[ $c -eq 3 ]] && break; done

包含错误消息的长版本:

c=0
until sftp user@server; do
  ((c++))
  if [[ $c -eq 3 ]]; then
    echo error
    break
  fi
done