Telefonní systém kosmické lodi Hipporion ze SKSP2019
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.

60 lines
1.4 KiB

5 years ago
#!/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;
}