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

あなたが直面している問題は、すべてのコマンドが異なるシェルで実行され、コマンドが副作用のために実行されcdたりexport、役に立たなくなったりすることです。

回避策として、すべてのコマンドの前に command を付けることができますcd $dir。例えば:

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

もう 1 つのオプションは、リモート ホストでシェルを実行して対話することですが、これはより難しく、エラーが発生しやすくなります。

最後に、Net::SSH::Perl は古くて保守されていません。最近では、Net::SSH2またはNet::OpenSSHの方が通常は優れたオプションです。

于 2013-05-29T07:36:52.280 に答える