У меня есть переменная пароля $pw
и переменная команды $cmd
.
$pw=UNIX password of a remote machine.
$cmd=Command to be executed in the remote machine.
теперь, если я запускаю команду, используя back-tick
Я смогу получить какое-то значение в выходной переменной.
Теперь, если я хочу выполнить ту же команду, ожидая, как добиться того же самого. Я имею в виду, как получить результат команды через ожидание в переменной.
моя ожидаемая функция имеет вид:
sub expt($$){
my $cmd;
my $timeout;
($cmd, $pw)=@_;
$expect = Expect->new;
$expect->raw_pty(1);
printDebug("Running the command under expt");
$expect->spawn($cmd)
or die "Cannot spawn $cmd: $!\n";
$expect->expect($timeout,
[ qr/password:/i, #/
sub {
my $self = shift;
$self->send("$pw\n");
exp_continue;
}
],
[qr/Are you sure you want to continue connecting \(yes\/no\)?/
, sub { my $self = shift;
$self->send("yes\n");
exp_continue; }],
[qr/Unix password \(user\):/
, sub { my $self = shift;
$self->send("pw\n");
exp_continue; }
],
);
$expect->soft_close();
return 0;
}
И я вызываю функцию как
expt($cmd,$pw);
Благодаря этому я могу выполнить скрипт на удаленном хосте, но мое требование - сохранить выходные данные удаленного хоста в локальной переменной.