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.
|