#!/usr/bin/perl use warnings; use strict; use Net::Telnet; use IO::Pty; use POSIX 'setsid'; use Getopt::Long; my $host = "192.168.1.121"; my $user = "root"; my $ssh = do_cmd('ftp',$host); my $shell = Net::Telnet -> new(Fhopen => $ssh); $shell -> binmode(1); $shell -> cmd(String => 'root', Prompt => '/[a-z]/'); $shell -> cmd(String => 'password', Prompt => '/[a-z]/'); my @lines = $shell->cmd(String => 'ls', Prompt => '/[a-z]/'); print @lines; print "\n"; sub do_cmd{ my ($cmd,@args) = @_; my $pty = IO::Pty -> new; defined (my $child = fork); return $pty if $child; setsid(); my $tty = $pty -> slave; close $pty; STDIN -> fdopen($tty,"<"); STDOUT -> fdopen($tty,">"); STDERR -> fdopen ($tty, ">"); close $tty; $| = 1; exec $cmd,@args; }