我正在编写一个脚本,该脚本将使用 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/