0

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

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

谁能告诉我如何实现这个功能?

提前致谢....

4

1 回答 1

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会话中一样执行命令。

于 2012-06-20T17:10:52.467 回答