You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.4 KiB
59 lines
1.4 KiB
#!/usr/bin/perl
|
|
# (c) Pali 2019, Perl license
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use Net::Telnet;
|
|
use Time::HiRes qw(usleep);
|
|
|
|
die "Usage: $0 host pass line 0|1\n" unless @ARGV == 4;
|
|
my $host = $ARGV[0];
|
|
my $pass = $ARGV[1];
|
|
my $line = $ARGV[2];
|
|
my $enable = $ARGV[3];
|
|
|
|
die "Line $line is not valid line number [1-6]\n" unless $line =~ /^[1-6]$/;
|
|
|
|
my $t = Net::Telnet->new(Timeout => 3, Prompt => '/[^\n]*> $/');
|
|
|
|
$t->open($host);
|
|
$t->waitfor('/Password :$/');
|
|
$t->print($pass);
|
|
$t->waitfor($t->prompt);
|
|
|
|
my $failed;
|
|
my $skip;
|
|
my $auto_answer;
|
|
|
|
for (1..10) {
|
|
if ($_ == 10) {
|
|
$failed = 1;
|
|
last;
|
|
}
|
|
|
|
($auto_answer) = map { /^auto_answer : ([0-9]+)$/ ? $1 : () } $t->cmd('show config');
|
|
if ($enable and ($auto_answer & (1 << ($line - 1)))) {
|
|
do { print "auto_answer on $host is already enabled\n"; $skip = 1 } if $_ == 1;
|
|
last;
|
|
} elsif (not $enable and not ($auto_answer & (1 << ($line - 1)))) {
|
|
do { print "auto_answer on $host is already disabled\n"; $skip = 1 } if $_ == 1;
|
|
last;
|
|
}
|
|
|
|
foreach ('open', 'key dir', 'key set', 'key set', 'key soft4', 'key set', 'key 6', 'key 8', "key $line", 'key soft1', 'key soft2', 'key set', 'close') {
|
|
$t->cmd("test $_");
|
|
usleep 200_000;
|
|
}
|
|
}
|
|
|
|
$t->print("exit");
|
|
$t->close();
|
|
|
|
if ($failed) {
|
|
warn (($enable ? "enabling" : "disabling") . " auto_answer on $host failed\n");
|
|
exit 1;
|
|
} else {
|
|
print ("auto_answer on $host is now " . ($enable ? "enabled" : "disabled") . "\n") unless $skip;
|
|
exit 0;
|
|
}
|
|
|