我想编写一个perl脚本,它将读取远程服务器上的文件,更改文件中的一些参数,并将整个文件数据或特定数据作为返回值。
实际上我在想的是使用cpan openssh
实用程序来创建一个ssh连接,然后调用服务器端的脚本,它执行所有读取并更改参数值。但是这种方法的问题在于我只能将成功或失败作为返回值 - 而不是文件数据。
有人可以告诉我如何实现这项功能吗?
提前致谢....
答案 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
会话一样执行命令。