Mailinglist Archive: opensuse-es (1045 mails)
| < Previous | Next > |
Re: [opensuse-es] De como hacer que mi recalcitrante router me de su IP.
- From: Pedro Marquina <pedro@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Fri, 1 Feb 2008 05:53:22 +0100
- Message-id: <200802010553.22532.pedro@xxxxxxxxxxxxxxxxxxxxxxxxx>
El Tuesday 29 January 2008 12:00:38 Carlos E. R. escribió:
para saber la ip
lynx -dump http://checkip.dyndns.org/ | grep IP | awk {'print $4'}
ademas en esta página tienes un escrip para que te avise por mail cada vez que
cambie.
http://crysol.inf-cr.uclm.es/node/83
Un saludo.
---------------------------------------------------------------------
Para dar de baja la suscripción, mande un mensaje a:
opensuse-es+unsubscribe@xxxxxxxxxxxx
Para obtener el resto de direcciones-comando, mande
un mensaje a:
opensuse-es+help@xxxxxxxxxxxx
Hola:Hola.
Pues que lo conseguí, de forma casi automática. Me falta un paso.
Tengo un router adsl comtrend CT536+ de tesa. Es linux por dentro,
bastante majo. Hace tiempo lo configuré para que me mandara su log al PC.
Pero en el log falta un detalle:
Jan 29 11:36:56 router pppd[324]: Received valid IP address from server.
Connection UP.
... que no dice la IP que ha conseguido. No es que lo oculte, pues se
puede conseguir por comando, pero no lo lista en el log.
También miré si por snmp, que lo tiene, se puede sacar, pero no, no viene.
Si la sesión ssh se pudiera lanzar sin password, por pareja de llaves, y
con un comando, el problema estaría resuelto; pero no puedo copiar la
llave al remoto, ni el ssh admite la contraseña en la linea de comandos,
ni el router admite comandos directos de esa guisa.
El caso es que el otro dia pregunté en la lista inglesa y me dijeron un
truco para, usando el programa "expect" lanzar el ssh controlado por el
programita, de manera que le da la contraseña y los comandos; por
ejemplo, el siguiente script:
#!/usr/bin/expect
spawn ssh -l 1234 router
expect "1234@router's password: "
send "contraseña\n"
expect " ->"
send "ping -q -c 50000 192.168.1.12\n"
interact
... ejecutado en una consola me lanza una retahila de 50000 pings a mi
PC, con lo cual consigo que no se me duerma, como he comentado otra vez.
El caso es que "expect" tiene un comando auxiliar para aprender de una
sesion capturando su salida. Así, con "autoexpect ssh -l 1234 router" se
lanza el ssh, entro, ejecuto mi comando para ver la IP, salgo, y ya tengo
un script inicial llamado "script.exp" que hace lo que busco. Hay que
editarlo un poquito, borrando lo que sobra, y listo:
#!/usr/bin/expect -f
set force_conservative 0 ;# set to 1 to force conservative mode even if
;# script wasn't run conservatively originally
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}
set timeout -1
spawn ssh -l 1234 router
match_max 100000
expect -exact "1234@router's password: "
send -- "password\r"
expect " -> "
send -- "wan show\r"
expect "Hit <enter> to continue"
send -- "\r"
expect " -> "
send -- "logout\r"
expect eof
para saber la ip
lynx -dump http://checkip.dyndns.org/ | grep IP | awk {'print $4'}
ademas en esta página tienes un escrip para que te avise por mail cada vez que
cambie.
http://crysol.inf-cr.uclm.es/node/83
Un saludo.
...ejecutando ese script, obtengo una salida como esta:
cer@nimrodel:~> ./script.exp
spawn ssh -l 1234 router
1234@router's password:
-> wan show
VCC Con. Catego. Service Interface Proto. IGMP Nat
QoS State Status DialMod IP ID Name
Name
address 0.8.32 1 UBR pppoe_8_32 ppp_8_32_1
PPPoE Disable Enable Enable Enable Up Direct 83.57.*.*
0.8.36 1 UBRwPCR pppoe_8_36_1 ppp_8_36_1 PPPoE Disable
Enable Enable Enable PPP Down Direct
Hit <enter> to continue
-> logout
Bye bye. Have a nice day!!!
Connection to router closed.
cer@nimrodel:~>
Vale, pues ya sólo es cuestión de cortar:
cer@nimrodel:~> ./script.exp | grep 0.8.32 | cut --fields=14-15
83.57.*.*
Y ya tengo mi IP en un script! Llevaré un año destrás de esta curiosidad.
¿Cual es el siguiente paso? Pues hacer que el syslog-ng me detecte la
siguiente linea:
Jan 29 11:36:56 router pppd[324]: Received valid IP address from server.
Connection UP.
y lance la ejecución de un script, que ejecute lo de antes, y meta la IP
en el log (quizás en el mismo log o en otro). Lo que no sé todavía es cómo
conseguir eso del syslog, lanzar un script. Tendré que leerme el manual.
---------------------------------------------------------------------
Para dar de baja la suscripción, mande un mensaje a:
opensuse-es+unsubscribe@xxxxxxxxxxxx
Para obtener el resto de direcciones-comando, mande
un mensaje a:
opensuse-es+help@xxxxxxxxxxxx
| < Previous | Next > |