2012-09-04 34 views
5

¿Cómo puedo ejecutar telnet dentro de un script de shell y ejecutar comandos en el servidor remoto?Telnet dentro de un script de shell

No tengo que esperar instalado en mi máquina solaris por razones de seguridad. Tampoco tengo instalado el módulo perl net::telnet.

Así que sin usar expect y perl ¿cómo puedo hacerlo?

Intenté lo siguiente pero no está funcionando.

#!/usr/bin/sh 
telnet 172.16.69.116 <<! 
user 
password 
ls 
exit 
! 

Cuando ejecuto, esto es lo que quiero decir:

> cat tel.sh 
telnet 172.16.69.116 <<EOF 
xxxxxx 
xxxxxxxxx 
ls 
exit 
EOF 
> tel.sh 
Trying 172.16.69.116... 
Connected to 172.16.69.116. 
Escape character is '^]'. 
Connection to 172.16.69.116 closed by foreign host. 
> 
+0

Usted dice "no funciona", pero _ ¿cómo no está funcionando? ¿Recibes mensajes de error? ¿Lo que pasa? –

+0

¿No le parece irónico que no tenga ciertas cosas instaladas por razones de seguridad, pero está usando telnet en lugar de ssh? – gpojd

Respuesta

11

Algunos de los comandos es posible que desaparezcan. Puede lograr un control más preciso con construcciones de scripts normales y luego enviar los comandos necesarios a través de un conducto con echo. Grupo de la lista de comandos para hacer una "sesión": -

{ 
sleep 5 
echo user 
sleep 3 
echo password 
sleep 3 
echo ls 
sleep 5 
echo exit 
} | telnet 172.16.65.209 
+4

+1 o mejor todavía, cambie a 'nc' (Netcat), que es menos misterioso que' telnet', que fue diseñado exclusivamente para uso interactivo exclusivamente. – tripleee

+0

¡Gracias! Funcionó perfectamente. – Keshav

+0

¡Mucho más fácil que usarlo! ¡Gracias! – NaturalBornCamper

-1

que tenía el mismo problema ... Sin embargo, al menos en mi entorno resultó ser el certificado SSL en el servidor de destino fue corrompido de alguna forma y el equipo del servidor se encargó del problema.

Ahora, lo que estoy tratando de hacer es encontrar la manera de hacer que un script ejecute exactamente lo que está haciendo arriba, pero quiero que descargue el mismo escenario anterior en un archivo y luego cuando encuentra un servidor en el que realmente se conecta, quiero que proporcione el carácter de escape (^]) y vaya al siguiente servidor.

Cuestiones relacionadas