Perl の Expect モジュールを使用して、インタラクティブなアクティビティを実行し、リモート マシンでコマンドを実行しています。これについてあなたの助けを求める
これが私が使用した手順です
ユーザーを別のアカウントに切り替えます。ログインするためのパスワードを送信します。新しいユーザーのシェルを取得したら、ssh コマンドを実行してリモート マシンに接続します。
次に、そのリモート マシンでコマンドを実行し、その応答を取得します。リモートマシンでコマンドを実行できます。端末にも出力が表示されます。しかし、それを変数に取り込んで値と比較することはできません。
use Expect;
my $exp = Expect->new;
$exp->raw_pty(1);
$exp->spawn('su - crazy_user') or die "Cannot spawn switch user cmd: $!\n"
$exp->expect($timeout,
[ qr/Password:/i,
sub { my $self = shift;
$self->send("$passwd\n");
exp_continue;
}],
[ qr/\-bash\-4.1\$/i,
sub { my $self = shift;
$self->send("ssh $REMOTE_MACHINE\n");
$self->send("$COMMAND1\n");
exp_continue;
}]
);
$exp->soft_close();
$COMMAND1
経由でリモート マシンで実行した結果を取得するにはどうすればよい$self->send("$COMMAND1\n")
ですか?