测试是否使用 SFTP 命令下载了任何文件

测试是否使用 SFTP 命令下载了任何文件

如何获取SFTP命令的返回码?

我这样做是为了从目录中下载所有文件。但如果目录为空,命令将返回1

如何获取实际代码File not found

echo 'get * /var/download' | sftp -b - user@host

或者一种解决方案是忽略/抑制错误File not found并返回0(不抑制所有错误,仅抑制此错误)

答案1

OpenSSHsftp成功时返回 0,错误时返回 1。

没有提供进一步的区别。


要测试目录中是否存在任何文件,然后再尝试下载它们,您可以使用:

echo "ls /remote/path/*" | sftp -b - [email protected]
if [ $? -eq 0 ]
then
    echo "Files exist, can download now"

    echo 'get /remote/path/* /local/path/' | sftp -b - [email protected]
    if [ $? -eq 0 ]
    then
        echo "Files successfully downloaded"
    else
        echo "Files exist, but failed to download"
    fi
else
    echo "Files do not exist"
fi

对于类似的问题,请参阅如何从本地 Linux 脚本检查远程 SFTP 服务器中是否存在文件?

相关内容