2

我是这个模块的新手。我尝试了一个示例程序,它运行良好。但是,现在我想知道如何在这个程序中执行多个命令:

use Net::SSH::Perl;
my $hostname = "<<hostname>>";
my $username = "<<username>>";
my $password = "<<password>>";

my $cmd = 'mkdir script; cd script';

my $ssh = Net::SSH::Perl->new("$hostname", debug=>0);
$ssh->login("$username","$password");

my ($stdout,$stderr,$exit) = $ssh->cmd("$cmd");
print $stdout;
4

1 回答 1

0

您可以重复调用cmd

您面临的问题可能是每个命令都在不同的 shell 中运行,并且由于副作用而运行的命令cdexport变得无用。

作为一种变通方法,您可以在所有命令前加上该cd $dir命令。例如:

my ($stdout1, $stderr1, $exit1) = $ssh->cmd("cd /$dir && $cmd1");
my ($stdout2, $stderr2, $exit2) = $ssh->cmd("cd /$dir && $cmd2");
...

另一种选择是在远程主机上运行一个 shell 并与之对话,但这更困难且容易出错。

最后,Net::SSH::Perl 陈旧且无人维护,如今,Net::SSH2Net::OpenSSH通常是更好的选择。

于 2013-05-29T07:36:52.280 回答