如何访问远程服务器上的文件并将文件数据作为perl中的返回值?

时间:2012-06-20 11:53:09

标签: perl ssh

我想编写一个perl脚本,它将读取远程服务器上的文件,更改文件中的一些参数,并将整个文件数据或特定数据作为返回值。

实际上我在想的是使用cpan openssh实用程序来创建一个ssh连接,然后调用服务器端的脚本,它执行所有读取并更改参数值。但是这种方法的问题在于我只能将成功失败作为返回值 - 而不是文件数据。

有人可以告诉我如何实现这项功能吗?

提前致谢....

1 个答案:

答案 0 :(得分:1)

以下是使用Net::SSH::Expect

执行所述操作的一种方法
use Net::SSH::Expect;
my $ssh = Net::SSH::Expect->new (
      host => "some.example.net", 
      password=> 'your-password', 
      user => 'you', 
      raw_pty => 1
    );

my $login_output = $ssh->login();
if ($login_output !~ /Welcome/) {
    die "Login has failed. Login output was $login_output";
}
$ssh->exec("perl -i -pe 'tr/9/a/;' temp.txt");
my $cat=$ssh->exec("cat temp.txt");
print($cat);

远程服务器上的文件(temp.txt)只包含一行0123456789 并且运行脚本具有此输出

$ perl /tmp/a.pl
012345678a

这里的要点是,使用此模块,我可以登录到远程计算机并像执行任何其他ssh会话一样执行命令。