I'm trying to put together a script that will allow me to connect to a unix system and run a few commands. I am able to use 'exec' without any problems, but when I try to use 'shell' I am prompted to 'Enter user name'. I've searched the site and google and it appears that I'm using 'shell' correctly so I'm not really sure what I'm doing wrong here
here is a copy of the code:
my $host = "host"; my $user = "name"; my $pass = "password"; my $cmd = "pwd"; my $cmd2 = "who"; my $ssh2 = Net::SSH2->new(); $ssh2->connect($host) or die "Unable to connect $@ $! \n"; $ssh2->auth_password($user, $pass) or die "Unable to login $@ $! \n"; my $chan = $ssh2->channel(); $chan->exec($cmd); while (<$chan>) { chomp; print "ONE: [$_]\n"; } $chan->close; my $chan2 = $ssh2->channel(); $chan2->exec("who"); while (<$chan2>) { chomp; print "TWO: [$_]\n"; } $chan2->close; my $chan3 = $ssh2->channel(); $chan3->shell(); print $chan3 "pwd\n"; print "THREE-a: [$_]\n" while <$chan3>; print $chan3 "who\n"; print "THREE-b: [$_]\n" while <$chan3>; $chan3->close;
and my output
ONE: [/usr/local] TWO: [user pts/40 Jun 26 07:04 (192.168.1.247)] TWO: [user pts/41 Jun 26 07:05 (192.168.1.247)] TWO: [user pts/42 Jun 26 07:25 (192.168.1.194)] TWO: [user pts/43 Jun 26 07:57 (192.168.1.194)] THREE-a: [Enter user name: Enter user name: ] THREE-b: [Enter user name: ]
In reply to Net::SSH2 shell in Windows by coldmiser
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |