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

Have you tried changing the pattern for matching the password prompt? Perhaps the following to allow any (or no) number of spaces:
'password:\s*'
Have you tried increasing your timeout?
$ssh->waitfor('password:\s*',100) or die "Where is the password prompt +??";
You might also want to make each error message within your program unique, so that you know for sure where the error is occurring.
$ssh->waitfor('password:\s*',100) or die "Where is the FIRST password +prompt??";

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

    I had tried that option, But I tried it one more time after reading your response....

    I increased the time out period aslo I used "\s*" to match number of spaces. But no luck. Here is hte output:

    # ./change_password.pl The login was successful Let's change the password of root on remote server now

    I am pretty sure that my script is ignoring the "send" statements and then apparently dying.

    Thanks for taking time to provide your feedback.

      OK, I have made some progress. I ran the perl debugger and after the 2nd print statement, the debugger throws following error:

      croak (ILLEGAL_ARGUMENT . " missing argument 'string'.") unless ($send +); croak (ILLEGAL_STATE_NO_SSH_CONNECTION);

      When I look into the "package Net::SSH::Expect", it is mentioned right on the top that:

      use constant ILLEGAL_STATE_NO_SSH_CONNECTION => "IllegalState: you don +'t have a valid SSH connection to the server";

      So,..my assumption in my previous replies was correct, the script is ignoring the "send " statement because now I realize that by teh time the script reaches to execute the "send" statement, the ssh connection does not remain active.

      Could you please help me figure this out, I cannot reason why would my ssh connection get closed ??