BandaAncha

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate

Extraer estadisticas adsl a través de telnet

Eldar

Buenas, estoy intentando escribir un script en bash para hacer un monitoreo o seguimiento de mi línea y no sé cómo hacer para obtener de forma automatizada las estadísticas de mi router, un Comtrend HG-536+ de Jazztel.

Lo que tengo hecho es esto:

 #!/bin/bash

 IP=$(wget -qO- http://www.cualesmiip.com/|grep -i "ip real" |sed -e 's/^.*>//'|sed -e 's///'|sed -e 's/<\/b>//'|sed -e 's/

 //')

 VAR=$(expect -c '

 puts "\n"

 spawn telnet 192.168.1.1

 expect "Login:*"

 sleep .2

 send -- "admin\n"

 expect "Password:*"

 sleep .2

 send -- "watashinopass\n"

 log_user 1

 sleep .2

 send -- "adsl info --show\n"

 sleep .2

 puts "\n"

 exit

 ')

 DATE=$(date)

 echo "$DATE" >> ~/Seguimiento.router.log

 echo "$IP" >> ~/Seguimiento.router.log

 echo "$VAR" >> ~/Seguimiento.router.log

 echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::" >> ~/Seguimiento.router.log

Pero claro el comando

 send -- "adsl info --show\n"

me muestra la información pero no me permite copiarla, al menos no de forma automatizada, a mano todo es más fácil ^^"

¿Alguna idea? Estoy abierto a sugerencias de todo tipo.

P.D: no soy precisamente bueno programando, así que si he hecho alguna burrada avisadme ^^"

Frankie2004

Hola Eldar,

No entiendo qué quieres decir con tu frase "me muestra la información pero no me permite copiarla"

¿De qué valores quieres sacar estadísticas exactamente?

eskasi
-1

Mirate este post:

http://www.adslzone.net/postp318302.html

🗨️ 1
Frankie2004

¿Y qué tiene que ver eso con lo que pregunta? :-/

Para alternativas, mejor SNMP que Syslog ... pero pregunta por Telnet con Expect.

Además, el Syslog solo almacena mensajes, y no todo genera un mensaje. Por eso preguntaba a Eldar qué valores busca.

ivangv

¿Puedes poner un ejemplo de la informacion que sale con el comando?

 send -- "adsl info --show\n"

Seguramente así podamos ayudarte mejor.

🗨️ 5
Eldar

Ese comando por sí solo no hace nada, tiene que estar dentro del script, una vez iniciada sesión con el router, entonces ese comando envía el otro comando (adsl info --show) al router y la salida de ese es la siguiente

 adsl: ADSL driver and PHY status

 Status: Showtime Channel: INTR, Upstream rate = 992 Kbps, Downstream rate = 8544 Kbps

 Link Power State: L0

 Mode: G.DMT

 Channel: Interleave

 Trellis: ON

 Line Status: No Defect

 Training Status: Showtime

 Down Up

 SNR (dB): 8.0 9.0

 Attn(dB): 31.0 17.0

 Pwr(dBm): 19.8 12.5

 Max(Kbps): 9088 1056

 Rate (Kbps): 8544 992

 G.dmt framing

 K: 268(0) 32

 R: 12 4

 S: 1 4

 D: 64 8

 ADSL2 framing

 MSGc: 1 1

 B: 268 32

 M: 1 4

 T: 1 1

 R: 12 4

 S: 1.0446 4.1212

 L: 2152 264

 D: 64 8

 Counters

 SF: 505393 505391

 SFErr: 281 0

 RS: 68733512 8591647

 RSCorr: 321403 12

 RSUnCorr: 3054 0

 HEC: 181 0

 OCD: 0 0

 LCD: 0 0

 Total Cells: 173129785 0

 Data Cells: 1299597 0

 Drop Cells: 0

 Bit Errors: 0 0

 ES: 158 0

 SES: 0 0

 UAS: 58 0

 Hit to continue

Pero claro esto lo he copiado yo a mano, con el ratón, y no sé dónde buscar para conseguir la información, o al menos la referente a la sincronía, SNR, atenuación, rate y demás.

🗨️ 4
Eldar

Gracias pero no tengo windows y además quiero hacer yo mismo el script, por amor propio más que nada xD

Frankie2004

¿Has probado a usar los comandos log_file y send_log de expect en vez de usar variables de entorno?

(link roto)

Por cierto, una vez dentro del router hay muchos sitios de donde sacar la IP sin tener que ir a una web externa

El gateway lo tienes en en /etc/gateway -> /var/fyi/sys/gateway ... y también está en la lista de rutas.

🗨️ 1
Eldar

Gracias, ya está solucionado, de forma muy cutre y usando sed, pero es lo que hay xDD

Lo que dices de log_file y send_log en realidad no lo necesitaba, pues con log_user 1 ya hacía lo mismo o parecido, lo que le pasaba es que una vez que entraba al router no me devolvía ningún mensaje, pero por lo visto si tras ejecutar el comando adsl info --show entra a sh y luego sale, por el mero hecho de hacerlo ya sí aparece el log con las estadísticas y ya era sólo meterle sed para adecentarlo.

 #!/bin/bash

 IP=$(wget -qO- http://www.cualesmiip.com/|grep -i "ip real" |sed -e 's/^.*>//'|sed -e 's///'|sed -e 's/<\/b>//'|sed -e 's/

 //')

 VAR=$(expect -c '

 puts "\n"

 spawn telnet 192.168.1.1

 expect "Login:*"

 sleep .2

 send -- "admin\n"

 expect "Password:*"

 sleep .2

 send -- "wartashinopass\n"

 log_user 1

 sleep .2

 send -- "adsl info --show\n"

 sleep .2

 puts "\n"

 send -- "sh\n"

 expect "#"

 sleep .2

 send -- "exit"

 puts "\n"

 exit

 ')

 DATE=$(date)

 echo "" >> ~/Seguimiento.router.log

 echo "$DATE" >> ~/Seguimiento.router.log

 echo "" >> ~/Seguimiento.router.log

 echo "$IP" >> ~/Seguimiento.router.log

 echo "" >> ~/Seguimiento.router.log

 echo "$VAR"|sed -e '1,31s/.*//g'|sed -e '77,$s/.*//g'| sed '/^$/d' >> ~/Seguimiento.router.log

 echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::" >> ~/Seguimiento.router.log

Ahí está, por si alguien quiere echarse unas risas xDDD