Pregunta

¿Alguien sabe de una manera fácil de crear un script que puede conectarse a un servidor telnet, telnet hacer algunas cosas de costumbre, y luego cerrar la sesión? Estoy tratando con usuarios que no están familiarizados con telnet y los comandos que van a necesitar para funcionar. Todo lo que quiero es para ellos para hacer doble clic en un guión, guión y tienen que ejecutar de forma automática los comandos para ellos.

Probablemente se esté preguntando, "¿En qué plataforma son los usuarios sobre?" Serán en Windows y Linux. Implementaciones en lenguajes como Perl, Java o Python son aceptables. Veo que tiene un módulo de Perl Net :: Telnet. Alguien ha utilizado eso?

Mi solución ideal sería crear dos archivos de script. un archivo BAT para las ventanas, y una secuencia de comandos shell de Linux. Mientras que esto haría que el mantenimiento de doble un problema, significaría que no tendría que instalar Perl / Java / Python / etc ... en cada máquina. Por desgracia, no he visto ninguna manera de automatizar una sesión de telnet con archivos por lotes o secuencias de comandos shell.

Gracias.

¿Fue útil?

Solución

esperar se construye para esto y puede manejar la entrada / salida, más los tiempos de espera, etc. Tenga en cuenta que si' re no es un fan TCL, hay esperar módulos para Perl / Python / Java.

EDIT: La página anterior sugiere que la Wikipedia esperar la entrada es un recurso útil :-)

Otros consejos

He usado varios métodos para sesiones de secuencias de comandos de telnet en Unix, pero la más sencilla es probablemente una secuencia de comandos de eco y de sueño, con su salida de hilo en telnet. Tubería de la salida en otro comando es también una posibilidad.

tonta ejemplo

(echo password; echo "show ip route"; sleep 1; echo "quit" ) | telnet myrouter

Este (basicallly) recupera la tabla de enrutamiento de un enrutador Cisco.

Otro método es usar netcat (nc o, dependiendo de lo que POSIX) en el mismo formato que muestra Vatine o se puede crear un archivo de texto que contiene cada comando en su propia línea.

He encontrado que algunos telnet POSIX' no manejan correctamente redirigir (por eso sugiero netcat)

Este script vbs vuelve a cargar un interruptor de Cisco, asegúrese de telnet se instala en Windows.

Option explicit
Dim oShell
set oShell= Wscript.CreateObject("WScript.Shell")
oShell.Run "telnet"
WScript.Sleep 1000
oShell.Sendkeys "open 172.25.15.9~"
WScript.Sleep 1000
oShell.Sendkeys "password~"
WScript.Sleep 1000
oShell.Sendkeys "en~"
WScript.Sleep 1000
oShell.Sendkeys "password~"
WScript.Sleep 1000
oShell.Sendkeys "reload~"
WScript.Sleep 1000
oShell.Sendkeys "~"
Wscript.Quit

Puede que no parezca una buena idea pero se usa Java y utiliza la programación de sockets TCP / IP simple de conectar a un servidor telnet y la comunicación de cambio. Y funciona perfectamente si se conoce el protocolo implementado. Por SSH, etc, que podría ser difícil a menos que sepa cómo hacer el apretón de manos, etc, pero simple telnet funciona como un regalo.

Otra forma he intentado, utilizaba proceso externo en Java System.exec (), etc, y luego dejar las ventanas construidas en telnet hacer el trabajo para usted y que acaba de enviar y recibir datos al proceso de sistema local.

Comprobar el sendCommand herramienta .

Se puede utilizar de la siguiente manera:

perl sendcommand.pl -i login.txt -t cisco -c "show ip route"
import telnetlib

user = "admin"
password = "\r"

def connect(A):
    tnA = telnetlib.Telnet(A)
    tnA.read_until('username: ', 3)
    tnA.write(user + '\n')
    tnA.read_until('password: ', 3)
    tnA.write(password + '\n')
    return tnA
def quit_telnet(tn)
    tn.write("bye\n")
    tn.write("quit\n")

Un par de preguntas:

  1. ¿Se puede poner cosas en el dispositivo que usted está en un telnet?
  2. ¿Son los comandos ejecutados por el script de la misma o varían por la máquina / usuario?
  3. ¿Quieres que la persona que haga clic en el icono para que proporcionar un nombre de usuario y / o contraseña?

Dicho esto, he escrito algunos de Java hace un tiempo para hablar con un par de regletas de enchufes habilitados para IP (Baytech RPC3s) que podrían ser de utilidad para usted. Si está interesado Voy a ver si puedo desenterrarlo y que lo ponga en algún lugar.

Me gusta el ejemplo dado por el Estado activo usando pitón. Aquí está el enlace completo . He añadido el registro sencillo en parte del enlace, pero se puede obtener la esencia de lo que podría hacer.

import telnetlib

prdLogBox='142.178.1.3'
uid = 'uid'
pwd = 'yourpassword'

tn = telnetlib.Telnet(prdLogBox)
tn.read_until("login: ")
tn.write(uid + "\n")
tn.read_until("Password:")
tn.write(pwd + "\n")
tn.write("exit\n")
tn.close()

shell Bash apoya esta fuera de la caja, por ejemplo.

exec {stream}<>/dev/tcp/example.com/80
printf "GET / HTTP/1.1\nHost: example.com\nConnection: close\n\n" >&${stream}
cat <&${stream}

Para filtrar y sólo muestran algunas líneas, ejecute:. grep Example <&${stream}

Escribir la sesión de telnet en un archivo BAT Dos y ejecutar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top