| CLI Automatic Test with Perl | ||
|---|---|---|
| <<< Previous | Next >>> | |
Mulitpattering against timeout.
It's all about $obj->expect.
Example 1. Same SSH connection just with more expect-ations ;)
#!/usr/bin/perl -w
use strict;
use Expect;
my $timeout = 5;
my $spawn;
my $ssh = Expect->new();
$ssh->spawn("ssh root\@127.0.0.1") or die "Can not spawn ssh: $!\n";
$ssh->expect($timeout,
[
'-re', '\(yes\/no\)\?\s',
sub {
$spawn = 1;
my $fh = shift;
$fh->send("yes\r");
exp_continue;
}
],
[
'-re', 'password:\s',
sub {
my $fh = shift;
$fh->send("password\r");
}
],
[
eof =>
sub {
if ($spawn) {
warn "EOF while login.\n";
} else {
warn "EOF while spawning ssh.\n";
}
}
],
[
timeout =>
sub {
if ($spawn) {
warn "No prompt.\n";
} else {
warn "Can't spawn ssh\n";
}
}
],
'-re', '\[root\sprompt\]#\s',
) or
die "Expect failed at: ".$ssh->exp_error()."\n";
$ssh->interact();
|
| <<< Previous | Home | Next >>> |
| 5. Expect - basics | 7. Expect STDOUT/STDERR |