[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Automating a password reset via net-telnet

Daniel Berger

7/10/2007 4:59:00 PM

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


1 Answer

Daniel Berger

7/10/2007 9:16:00 PM

0



On Jul 10, 10:58 am, Daniel Berger <djber...@gmail.com> 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.

<snip>

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