in reply to Run interactive commands with "Net::SSH::Expect"

I have just added a sample script into Net::OpenSSH distribution showing how to change remote passwords using Net::OpenSSH + Expect.
  • Comment on Re: Run interactive commands with "Net::SSH::Expect"

Replies are listed 'Best First'.
Re^2: Run interactive commands with "Net::SSH::Expect"
by slayedbylucifer (Scribe) on Jan 13, 2011 at 12:49 UTC

    Finally, after playing around with perl debugger, I got my script working. here is the code:

    #!/usr/bin/perl use strict; use warnings; use Net::SSH::Expect; my $ssh = Net::SSH::Expect-> new ( host => "10.10.10.10", password => "current_password", user => "root", raw_pty => 1, timeout => 10, log_file => "log_file" # this line actually got my head spinn +ing in right direction ); my $login_output=$ssh->login(); if ( $login_output =~ /Last/ ) { print "The login for ROOT was successful, Let's see if we can chang +e the password \n"; $ssh->send("passwd"); $ssh->waitfor ('password:\s*', 10) or die "Where is the first passw +ord prompt??"; $ssh->send("new_password"); $ssh->waitfor ('password:\s*', 10) or die "Where is the Second pass +word promp??"; $ssh->send("new-password"); $ssh->waitfor('passwd:\s*',5); # And this was the kicker, I was mis +sing this in my original script print "The password for ROOT has been changed successfully \n"; } else { die "The log in for ROOT was _not_ successful.\n"; }

    Thnx for all the responses.

    @Salva: Thanks for your script. It was a much needed one. I haven't yet tried your script but I will soon try it out.