Automating a password reset via net-telnet

Hi all,

I’m trying to automate a password reset via telnet for a report. This
happens twice per year, and right now I’m handling things manually. My
attempts so far have been unsuccessful. Here’s what I’ve tried:

require ‘net/telnet’
include Net

session = Telnet.new(“Host” => host, “Output_log” =>
‘ftp_test.output’)
session.login(user, pass)

session.cmd(“passwd”)
#session.cmd(“String” => “passwd”, “Match” => /password:/i) # Tried
this, too

session.puts(“old_password”)
session.puts(“new_password”)
session.puts(“new_password”)

session.close

But, this doesn’t seem to work. The output file shows that it’s
waiting for the current password, but the program fails with a timeout
error. If I use the second cmd variant that I showed above, the script
fails silently.

Any ideas?

Thanks,

Dan

On Jul 10, 10:58 am, Daniel B. [email protected] wrote:

Hi all,

I’m trying to automate a password reset via telnet for a report. This
happens twice per year, and right now I’m handling things manually. My
attempts so far have been unsuccessful.

The documentation from Perl’s Net::Telnet module suggested, for
interactive programs, to always use puts/print + waitfor. So, I went
with that approach. Here’s what ultimately succeeded:

require ‘net/telnet’
include Net

session = Telnet.new(“Host” => host)
session.login(user, “XXXX”)
session.puts(“passwd”)

session.waitfor(/existing login password:\s*/im)
session.puts(current_password)

session.waitfor(/new password:\s*/im)
session.puts(new_password)

session.waitfor(/new password:\s*/im)
session.puts(new_password)

session.waitfor(/password successfully changed/) # !!!

session.close

Note the multi-line regexes - that was crucial. Also, be sure to wait
for the success message. If you don’t your session will close too
early and it will appear that your program succeeded, when in fact it
did not.

Regards,

Dan