Hay un proceso demonio escuchando en el puerto 5144, que no puedo modificar.
Quiero usar netcat para enviar el contenido de un archivo de texto al servidor, pero esto hace netcat
que se cuelgue el terminal hasta que presione Ctrl+ C:
cat file.txt | nc -u 127.0.0.1 5144
La única forma en que puedo hacer que funcione es ejecutando nc -u 127.0.0.1 5144
y copiando / pegando el contenido del archivo manualmente.
¿Algunas ideas?
También tenga en cuenta:
cat file.txt | ...
conducebash: ...: command not found
y puedo seguir usando el terminal- usar
nc -u 127.0.0.1 5144 < file.txt
conduce al mismo comportamiento que usar | encima
linux
data-transfer
netcat
Amil
fuente
fuente
cat file.txt | …
? ¿Qué talnc -u 127.0.0.1 5144 < file.txt
?bash: ...: command not found
y usar "<file.txt" hace lo mismo que | operador (netcat simplemente se cuelga)bash: ...: command not found
"? ¿O dice "bash: cat: command not found
" o "bash: nc: command not found
"? ¿Y luego sale a un indicador de shell o se cuelga? (Os animo a editar la pregunta para añadir estos datos, para que la gente en Australia que apenas están despertando no tienen que leer todos estos comentarios para averiguar cuáles son sus síntomas.)Respuestas:
Si está utilizando la versión GNU de netcat, puede usar el indicador -c para cerrar la conexión en EOF.
Si está utilizando la versión original de la herramienta, puede utilizar el indicador -q.
Un ejemplo para la versión original es:
He agregado "-q 0" a su comando original. Esto cierra la conexión después de que se haya enviado el archivo.
fuente
-l -p <port>
para escuchar. La versión de GNU simplemente toma-l <port>
.Suponiendo que después de enviar la conexión EOF permanecerá inactiva, puede usar la
-w timeout
opción, que funciona paratimeout
ser igual a cero (a diferencia de la-q
opción estúpida ...)fuente
Si está transfiriendo de FreeBSD a Windows:
FreeBSD:
cat file.txt | nc -N 10.0.0.5 5144
-N
apagará el socket de red después de EOFVentanas:
nc -l -p 5144 > output.txt
-l
dejará de escuchar cuando la conexión esté cerrada (a diferencia-L
)fuente