error-handling - 在 SCP 或 SFTP 中捕获错误

标签 error-handling sftp scp

我正在编写一个脚本,该脚本将使用 SCP 或 SFTP 将文件从一台服务器传输到另一台服务器。区分发生的不同类型的错误对我来说非常重要。

我的问题是,从 SFTP 和(尤其是)SCP 返回的错误代码似乎无法区分不同类型的错误。

例如,当 SCP-ing 时,无论实际发生什么类型的错误(例如:权限被拒绝,无法连接到主机都返回错误代码 1),我似乎都收到错误代码 1。

对于 SFTP 或 SCP,有没有办法可靠地确定正在发生的错误;无需通过 $stderr 解析并以这种方式提取错误?

最佳答案

是的,使用一些脚本语言(即 Perl、Python、Ruby 等)和一些可以返回该信息的 SFTP 模块。

例如:

#!/usr/bin/perl
use Net::SFTP::Foreign;
my $sftp = Net::SFTP::Foreign->new($host);
$sftp->error and die "SFTP failed: " . $sftp->error;
my $sftp->put("foo", "bar");
$sftp->error and die "put failed: " . $sftp->error;

关于error-handling - 在 SCP 或 SFTP 中捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8944534/

相关文章:

error-handling - 我可以在 Netlogo 中使用 try catch(异常处理)吗

php - 如何使用 phpseclib 复制或移动远程文件?

Perl 使用 Net::SFTP::Foreign 摆脱服务器欢迎消息

c - 在 C 运行时与命令行程序交互(stdin/out)

linux - 仅使用 ssh/scp 的文件同步

terminal - 如何使用scp将文件从服务器复制到客户端?

python - 收到 'list index out of range' 错误

python - 未能捕获语法错误python

c++ - 如何使用 libviso2?

perl - 如果尝试失败,如何使 scp 重试直到成功?