如何使用Perl中的linux命令连接到sftp #/usr/local/bin/perl 严格使用; 使用警告; 系统($cd$PATH /usr/bin/sftp mysite.com

如何使用Perl中的linux命令连接到sftp #/usr/local/bin/perl 严格使用; 使用警告; 系统($cd$PATH /usr/bin/sftp mysite.com,linux,perl,Linux,Perl,这样一个模糊的问题很难给出更多的答案 你试过这个模块了吗 编辑: 根据对问题的编辑-尝试使用Net::SFTP::Foreign #!/usr/local/bin/perl use strict; use warnings; system("cd $PATH /usr/bin/sftp mysite.com <<!EOF put sample.txt bye !EPF"); 您应该会收到一条更有意义的错误消息,您可以从中获得它。您可以尝试其他模块,例如或的SFTP功能。您可以详细说

这样一个模糊的问题很难给出更多的答案

你试过这个模块了吗

编辑:

根据对问题的编辑-尝试使用Net::SFTP::Foreign

#!/usr/local/bin/perl
use strict;
use warnings;
system("cd $PATH
/usr/bin/sftp mysite.com <<!EOF
put sample.txt
bye
!EPF");

您应该会收到一条更有意义的错误消息,您可以从中获得它。

您可以尝试其他模块,例如或的SFTP功能。

您可以详细说明一下,并展示您到目前为止所做的工作吗?除非您使用ssh代理设置公钥身份验证,否则将始终提示您使用SFTP输入密码。在shell中,这是有办法的被称为“期望”
    use Net::SFTP::Foreign;
    use warnings;
    use strict;

    my $host = "xxx.xxx.xxx.xxx";
    my $sftp = Net::SFTP::Foreign->new($host, user => 'user', password => 'pass');
    $sftp->error and die "Something bad happened: " . $sftp->error;
    $sftp->put("sample.txt", "/home/test/test") or die "put failed: " . $sftp->error;