linux - 检查 sftp 连接状态,如果失败则尝试另一个 IP

标签 linux shell sftp


我尝试做的是使用 shell 脚本通过 sftp 发送文件。我尝试连接到第一个 IP,如果此连接失败,我会尝试另一个 IP。
问题是,我似乎无法捕获 sftp 状态。

这是我尝试过的:

#!/bin/bash
sftp -oIdentityFile=path_to_private_key  USER@IP1:PATH <<EOF
if [[ $? -eq 0 ]]; then
        put myfile
        ls
        quit
else
        echo "ERROR"
fi
EOF

你知道如何做这样的事情吗:

sftp IP1
if(success){
   put file
   quit
}
else{
   sftp IP2
   if(success2){
      put file
      quit
   }
   else{
      echo "Error"
   }
}

谢谢

最佳答案

找到了一种方法来做我想做的事。问题正如我怀疑的“EOF/if”

这是我发现的:

#!/bin/bash
sftp -oIdentityFile=path_to_private_key USER@$IP1:PATH <<-EOF1
        put myfile
        quit
EOF1
if [[ $? -ne 0 ]]; then
    sftp -oIdentityFile=path_to_private_key USER@$IP2:PATH <<-EOF2
        put myfile
        quit
    -EOF2
    if [[ $? -ne 0 ]]; then
        echo "ERROR"
    fi
fi

希望对遇到此问题的人有所帮助

关于linux - 检查 sftp 连接状态,如果失败则尝试另一个 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22715930/

相关文章:

linux - 如何查找多行内容的文件?

php - Stream_context_set_params 不适用于 ssh2.sftp 包装器

security - 与 Windows 2008 服务器的 SFTP 连接。如何防止信任首次使用(TOFU)请求?

在运行时检查 Linux 内核配置

linux - 如何防止在 ZSH 中执行命令?

c - 使用 C 在 Linux Shell 中实现管道

linux - 解析路由以获取网关/DNS

java - JSch是否需要安装sftp/ssh客户端

linux - Linux 如何对待( protected )内存区域?

bash - 在使用简单的 awk 脚本时遇到问题