Tengo numerosas cajas de Linux con un conjunto muy limitado de comandos y espacio en disco. Pero tiene el telnet
comando sobre él.
Me conecto de forma remota a cada una de estas sondas (mediante programación) y emito un comando linux de línea a través de SSH.
Necesito ejecutar un solo comando para conectarme a una máquina específica, usando telnet, y luego desconectarme de inmediato .
Puedo hacer todo eso, pero la desconexión de inmediato parte. Telnet abre una especie de consola o terminal y no puedo entender un comando de una línea para ejecutar el comando telnet y luego desconectarlo de inmediato.
Si hago eso, puedo analizar fácilmente la salida de texto de los mensajes de error por no poder conectarme a la máquina en el puerto especificado y eso es exactamente lo que estoy buscando.
Entonces, ¿cómo puedo ejecutar un comando de una línea para conectarme a una máquina usando telnet y desconectarme después?
Respuestas:
Debería poder canalizar el
exit
comando en STDINtelnet
. Tratar:y ver si eso funciona. (parece funcionar en mi servidor web, pero YMMV).
fuente
El método más simple y fácil se da a continuación.
n - El tiempo de espera en segundos antes de la salida automática. Podría ser fraccional como 0.5. Tenga en cuenta que algunos resultados requeridos pueden no devolverse en el tiempo de espera especificado. Por lo tanto, es posible que necesitemos aumentar en consecuencia.
servidor : la IP del servidor de destino o el nombre de host.
puerto : número de puerto del servicio de destino.
También puede redirigir la salida a un archivo como este,
fuente
En mi caso esto funciona. (CentOS 7):
fuente
Creo que una mejor herramienta para enviar comandos directamente y solo obtener resultados sería netcat. Es una herramienta simple pero poderosa para poner comandos a través de los puertos. Puede ver un ejemplo de uso en esta pregunta de superusuario: /superuser/261900/how-can-i-pipe-commands-to-a-netcat-that-will-stay-alive - Asker da un ejemplo de trabajo en el que la conexión se cierra después de unos segundos.
Y si solo desea probar la conectividad, use esto: http://terminalinflection.com/use-netcat-not-telnet-to-test-network-connectivity/
fuente
&& exit
ver si se desconecta (al menos en ssh es suficiente).&& exit
no funcionó Si glibc existiera y creo que sí. ¿Por qué menc.traditional
quejaría como si faltara?Esta es otra versión de la respuesta anterior que hace que actúe un poco más como la sintaxis telnet "normal". Si te gusta mi respuesta, dale un voto positivo no a esto, sino al original.
fuente
Aquí hay una solución que encontré en Internet:
A mí me funciona en SunOS y HP-UX
fuente
Tratar
La mejor parte de lo anterior es que también obtienes el estado de salida. Si telnet es exitoso, el código de salida será 0 o si no es 1
fuente
Evite netcat si tiene rutas personalizadas, ya que no obedece las reglas de enrutamiento. Similar a cómo
nslookup
,dig
ehost
ignore el archivo / etc / hosts ( nslookup, dig, firefox ignorando las entradas del archivo / etc / hosts ).es decir: a diferencia de las aplicaciones y herramientas como
telnet
y/dev/tcp
( Probar el puerto TCP remoto usando telnet ejecutando un comando de una línea ) que sigue las reglas de enrutamiento del sistema,nc
usa la puerta de enlace predeterminada a menos que se le indique específicamente que use una dirección IP de origen con-s
:Necesitaba probar si una aplicación podía llegar al recurso, y si las rutas no funcionaban,
netcat
informé que todo estaba bien ya que la dirección de origen se había especificado en la prueba. Estoy cambiando a usar/dev/tcp
.fuente