#!/usr/local/bin/perl use Net::Telnet qw (TELOPT_TTYPE); $termtype = 'no-resize-vt100'; $telopt_ttype_ok = ''; $connection = new Net::Telnet ( Host=>'ssd.jpl.nasa.gov', Port=>6775 ); $connection->option_callback(\&opt_callback); $connection->option_accept(Do=>TELOPT_TTYPE); $connection->suboption_callback(\&subopt_callback); $connection->open(); $connection->waitfor('/Horizons> /'); $connection->print('load vla-1'); $connection->waitfor('/Horizons> /'); $connection->print('page'); $connection->waitfor('/Horizons> /'); $connection->print('799'); $connection->waitfor('/.*Select.*: $/'); $connection->print('e'); $connection->waitfor('/.*Observe.*: $/'); $connection->print('o'); $connection->waitfor('/.*Coordinate.*: $/'); $connection->print('-5@399'); $connection->waitfor('/.*Starting.*: $/'); $connection->print('1981-Mar-07 08:00'); $connection->waitfor('/.*Ending.*: $/'); $connection->print('1981-Mar-07 17:00'); $connection->waitfor('/.*interval.*: $/'); $connection->print('10m'); $connection->waitfor('/.*Accept.*: $/'); $connection->print('y'); $connection->input_log('horizons.ephem.log'); $connection->waitfor('/.*Select.*: $/'); $connection->input_log(''); $connection->print('q'); $connection->close; exit 0; sub opt_callback { my ($obj, $option, $is_remote, $is_enabled, $was_enabled, $buf_position) = @_; if ($option == TELOPT_TTYPE and $is_enabled and !$is_remote) { $telopt_ttype_ok = 1; } 1; } sub subopt_callback { my ($obj, $option, $parameters) = @_; my $ors_old; if ($option == TELOPT_TTYPE) { $ors_old = $obj->output_record_separator(""); $obj->print("\xff\xfa", pack("CC", $option, 0), $termtype, "\xff\xf0"); $obj->output_record_separator($ors_old); } 1; }