[linux] Re: telnet password ?

Theo v. Werkhoven twe-nllgg op ferrets4me.xs4all.nl
Za Apr 15 01:07:34 CEST 2006


* Wed, 12 Apr 2006, pdvsfh4 op xs4all.nl:

> Casper Gielen wrote:
> > Op maandag 10 april 2006 19:19, schreef Paul de Vries:
> >   
> >> mijn adsl modem heeft soms kuren, dan hangt hij spontaan de externe
> >> verbinding op.
> >> dat kan ik constateren en via telnet herstellen, als ik zou weten hoe je
> >> vanuit een shell script een telnet password kan opgeven.
> >>
> >> wie vertelt het mij ?
> >>     
> > Je wilt Expect hebben:
> >
> > Description: A program that "talks" to other programs
> >  Expect is a program that "talks" to other interactive programs
> >  according to a script.  Following the script, Expect knows what
> >  can be expected from a program and what the correct response
> >  should be.  An interpreted language provides branching and high-
> >  level control structures to direct the dialogue.  In addition,
> >  the user can take control and interact directly when desired,
> >  afterward returning control to the script.
> >   
> heb ik bekeken, lijkt precies de bedoeling, maar te ingewikkeld om 
> 'effe'  mee aan de slag te kunnen.
> bewaar ik voor een regenachtige zondagmiddag.

Expect heeft ook een 'leer-mode' (leer als in nieuwe dingen opdoen,
niet als in een kinky zwart jasje :) ).
Zie autoexpect(1)
Als je daarna het verkregen script bestudeert vallen de stukjes
vanzelf op hun plaats. Voor wat moeilijkere scripts is het trouwens
handig te weten dat expect niets anders is dan een tcl macro. Als je
dus wat tcl leert (heel makkelijk, zelfde syntax als b.c. C) kan je
een expect script uitbreiden tot een vol automatisch pick&place
systeem voor een remote site.

Maar een heel simpel expect scriptje:
#!/usr/bin/expect --

set timeout 60
spawn telnet zyxel
expect "Password:"
send "xxxxxxxxx\r"
expect -re ".*Number:"
send "24\n"
expect -re "Number:"
send "8\n"
expect -re "P-650R13>"
send_user "\nBit Error Rate Totals:\n"
send "wan adsl bert\n"
send_user "\n"
expect -re "P-650R13>" 
send_user "\nLineData Far:\n"
send "wan adsl linedata far\n"
send_user "\n"
expect -re "P-650R13>"
send_user "\nLineData Near:\n"
send "wan adsl linedata near\n"
send_user "\n"
expect -re "P-650R13>"
send_user "\nChanData:\n\n"
send "wan adsl chandata\n"
expect -re "P-650R13>"
send_user "\n"

Haalde wat data van m'n adsl doosje op zodat ik die met 1 opdracht
kon bekijken (ik moet dit voor m'n nieuwe st546 nog eens aanpassen).
'expect -re' kijkt naar ontvangen data volgens een regexp, 'send'
verzendt data, 'send_user' zet data op stdout.

Theo
-- 
Theo v. Werkhoven    Registered Linux user# 99872 http://counter.li.org
ICBM 52 13 26N , 4 29 47E.     +      ICQ: 277217131
SUSE 9.2                       +   Jabber: muadib op jabber.xs4all.nl
Kernel 2.6.8                   +   See headers for PGP/GPG info.
Claimer: any email I receive will become my property. Disclaimers do not apply.



More information about the Linux mailing list