0

Net::SSH::Perl モジュールを使用して、1 行で 2 つのコマンドを実行したいと考えています。

実際には、最初のコマンドはいくつかの環境変数を設定し、2番目のコマンドは、そのシェルに環境変数を設定する必要があるコマンドを実行します。

以下のコードを機能させる方法

例えば:

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

my $cmd = 'export PATH= *** ; java -version';

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

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

この質問はすでにこのサイトで尋ねられていますが、答えはありません。

$ssh->cmd2 つの呼び出しは同じセッションで呼び出されないため、複数回呼び出すことはできません。

4

3 に答える 3

1

いくつかの変数が設定されたプログラムを呼び出す最も簡単な方法は、変数定義をコマンドの直前に置くことです。

VAR1=VALUE1 VAR2=VALUE2 ... cmd arg1 arg2 arg3 ...

いくつかのファイルに変数定義が既にあるように見える場合は、次のようにします。

source /path/to/scripts/that/sets/vars.sh && cmd arg1 arg2 arg3 ...

これは、コマンドをローカルで実行する場合 (つまり、 を介してsystem) またはリモートで を介して実行する場合の両方で機能しますssh

また、変数名と値、およびコマンド名と引数で、シェルのメタ文字を引用する必要がある場合があることに注意してください。

于 2013-05-07T07:55:29.823 に答える