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