3

我有一个使用Net::SFTP::Foreign的 Perl 脚本,如果我手动运行它,它运行得很好。当设置为 cron 任务时,脚本会启动,但失败并出现错误 37,连接断开。我不明白为什么。有谁知道我如何才能确切地找出连接失败的原因?

这是我创建的地方:

$sftp = Net::SFTP::Foreign->new("$source_machine_user_id\@$source_machine_ip",
                                autodie => 1, key_path => $id_file_path,
                                fs_encoding => 'latin1');

我用过more => 'v',但没有得到更多信息。我也试过autodie => 0了,但这似乎也没有什么不同。

我正在使用公钥进行身份验证。

4

1 回答 1

1

这通常发生在ssh不在您的 cron 上时$PATH

使用构造函数选项ssh对脚本上的位置进行硬编码。ssh_cmd例如:

$s = Net::SFTP::Foreign->new($host, ssh_cmd => '/opt/openssh/bin/ssh', ...);
于 2012-04-26T13:52:52.387 回答