http://qs321.pair.com?node_id=1080844


in reply to Passing telnet commands through SSH

Hi There,

One approach that might come in handy here is SSH tunneling. This is a technique for directing a remote SSH connection back to your local server.

To recap, you have ssh access to an intermediate host that has telnet access to the destination machine. Telnet normally runs on port 23.

Hopefully your local host is a 'Nix machine, which means that you can use a recipe such as this to set up port forwarding: Setting up an SSH tunnel

E.g. in another window: % ssh -g -L 10023:telnet-host:23 ssh-host

Telnet will then appear to be running locally on port 10023:

% telnet localhost 10023 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. .... login:
You can then adapt you script to connect to telnet on your localhost on port 10023.
#!/usr/bin/perl use warnings; use strict; use Net::Telnet; my ($username, $password) = @ARGV; die "usage $0 username password" unless $username && $password; my $telnet = new Net::Telnet ( Timeout=>10, Errmode=>'die', Port => 10 +023); $telnet->open('localhost'); $telnet->waitfor('/[\$#%:><][\s\b]+$/'); print "found login prompt..."; $telnet->print($username); $telnet->waitfor('/[\$#%:><][\s\b]+$/'); print "found password prompt..."; $telnet->print($password); print "logged in yay!\n";
Hope this helps.