Script para telnet, se puede?

Hola! A ver si me podéis resolver un par de dudillas que tengo sobre telnet

El caso es que he estado leyendo tutoriales para resetear la IP publica del router de un modelo concreto y tal, pero los tutoriales que he encontrado tratan de crear un script en BAT para "otro" programa que es el que envía ordenes por telnet en windows.

El caso es que examinando el script en BAT he conseguido hacer lo que pretendia pero lo he hecho a mano, osea, lo que se supone que hace el script a teclazos.

Ahora me gustaria saber si puedo hacer yo un script para mi consola (uso xubuntu asi que telnet esta instalado) que pueda meterse en telnet, mandar un par de instrucciones siempre las mismas y que se salga de telnet (osea, lo que hago yo a mano, que lo haga automaticamente). Como en windows usa un programa concreto queria saber si se puede, porque además nunca he hecho un script y tendria que aprender primero y no quiero que me lo hagais vosotros que tardais demasiado poco :cool:

En fin, se puede? alguna norma especial a tener en cuenta? Un saludo y gracias por el tiempo. [oki]
mmm.. redirecciona la entrada de telnet,

telnet < fichero.txt

Donde en fichero.txt tienes todos los comandos para telnet, uno a razón por linea.
wenasss

hice este script para otro hilo, mira a ver si puedes adaptarlo, o especifica un poco mas que quieres que haga...

sirve para reiniciar la conexion adsl en caso de estar caida...
tendria que funcionar en qualquier router que tenga el puerto telnet abiero y lleve un linux embebido dentro.

#!/bin/bash
#configuracion isp y router
dns=80.58.61.250      #pon aqui la dns de tu isp, ahora esta puesta la de telefonica(eliminar en caso de cortar el trozo de mas abajo)
host=192.168.0.1    #aqui la ip de tu ruter
port=23
user=usuario      #cambia usuario por el del router
pass=contraseña      #cambia contraseña por la del router

#estas son las ordenes que se enviaran al router
cmd1=sh
cmd2="adsl connection --down"
cmd3="adsl connection --up"
cmd4=reboot

#Elimina este trozo si no quieres que compruebe el estado de la conexion de adsl
#ya que solo envia las ordenes al router en caso de estar caida la conexion
if `ping -c 1 $dns> /dev/null` ;then
echo Servidor DNS:Online
else
echo Servidor DNS:Offline
echo Reiniciando ADSL
#eliminar hasta aqui

#este trozo que sigue son las ordenes que se envian al router atraves de telnet(que estan mas arriba)
( echo open ${host}
sleep 1
echo ${user}
sleep 1
echo ${pass}
sleep 1
echo ${cmd1}
sleep 2
echo ${cmd2}
sleep 2
echo ${cmd3}
sleep 2
echo ${cmd4} ) | telnet

fi



ya puestos voy a explicar un poco el codigo...

#!/bin/bash
indica en que lenguaje esta echo el script

dns=
esto es una variable en la cual puedes poner cualquier informacion
simplemente te inventas un nombre seguido de = y luego los datos que quieres que contenga.
para recuperar los datos simplemente usa $variable

if `ping -c 1 $dns> /dev/null` ;then <-- las ` ` sirven para ejecutar comandos y sus resultados usarlos en variables,funciones,etc...
comprueba que el ping del servidor que has puesto en dns > que el tiempo que tarda en enviar el ping a null
en caso afirmativo ejecuta solo los comandos siguientes a then, hasta encontrar else o fi y luego salta a fi sin ejecutar lo
que haya entre los comandos else y fi

en caso negativo ejecutara solamente los comandos entre el else y fi, aunque no es obligatorio la existencia de este bloque
en cuyo caso simplemente no ejecutaria ningun comando entre then y fi.

echo $variable
envia a la salida estandar el valor de la variable

sleep 1
espera 1 segundo


( echo open ${host}
sleep 1
echo ${user}
sleep 1
echo ${pass}
sleep 1
echo ${cmd1}
sleep 2
echo ${cmd2}
sleep 2
echo ${cmd3}
sleep 2
echo ${cmd4} ) | telnet

genera un bufer temporal en memoria con los comandos a usar dentro de telnet
y se lo pasa por su entrada estandar y lo usa en lugar del teclado

el primer comando a ejecutar cmd1 (sh) es para entrar en el shell del router
lo estoy analizando. Gracias! como me molan estas explicaciones

En verdad el script seria escribir telnet, open "direccion IP", "contraseña", 24, 8, wan adsl reset, e, 99, exit. (edito: el router tiene menu por telnet, pero con 24 8 accedes a la linea de comandos del router)

Cada [Coma , ] equivale a un intro

Ya con lo que me habéis dicho voy a probar ambos métodos. Lo que no entiendo del script de lok es el uso que le das a DNS que no lo entiendo del todo.

En fin un saludo. A ver como sale este hola mundo, que seria el primer script (es que....¡soy virgen! xD)

un saludo, ya ponre el script final cuando me funque. Gracias
dns es simplemente la dns de tu isp,
dentro del script la uso en el comando if.

traducido:

envia un ping a la direccion del isp y comprueba que no este caida,
en caso de estar caida, reinicia la conexion adsl

si no quieres esa funcion simplemente quita las lineas del codigo

un manual en español de bash, aunque es bastante basico, te ira bien para empezar
http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prog-Intro-COMO/

lo que pone en 1.introduccion sobre instalar saltatelo que es muy viejo y ademas ya lo tienes instalado
4 respuestas