in reply to access vi through teraterm
(yes, I did just give away the password to that old PBX. If it's still running and you can find it and connect to its serial port, feel free to hack away)use strict; use warnings; use Win32::SerialPort; my $loggedin = 0; my $term = Win32::SerialPort->new('COM1') or die "bad COM1\n"; $term->baudrate(9600); $term->databits(8); $term->parity("none"); $term->parity_enable(0); $term->stopbits(1); $term->handshake('xoff'); $term->user_msg(1); # misc. warnings $term->error_msg(1); # hardware and data errors $term->read_interval(1000); # max time between chars 1000 ms (1 +sec) $term->read_interval(0xffffffff); # non-blocking read $term->write_settings; $term->write("\r"); my $esccount = 0; while ($prompt !~ /Supervisor Name :/) { die "$esccount attempts to contact the PBX have failed." if $escco +unt++ > 10; # loop sending ESCs until we get the login prompt $term->write("\e"); sleep 2; ($count, $prompt) = $term->read(2000); } # we should now be at the Supervisor Name prompt $term->write("REPORTS\r"); sleep 2; ($count, $prompt) = $term->read(2000); if ($prompt =~ /Password\s+:/) { $term->write("REPORTS\r"); sleep 3; ($count, $prompt) = $term->read(2000); if ($prompt =~ /Main Menu/) { $loggedin = 1; } } . . .
|
---|