Há um processo daemon atendendo na porta 5144, que não posso modificar.
Eu quero usar o netcat para enviar o conteúdo de um arquivo de texto para o servidor, mas isso faz netcat
com que o terminal seja interrompido até que eu pressione Ctrl+ C:
cat file.txt | nc -u 127.0.0.1 5144
A única maneira de fazê-lo funcionar é executando nc -u 127.0.0.1 5144
e copiando / colando o conteúdo do arquivo manualmente.
Alguma ideia?
Observe também:
cat file.txt | ...
leva aebash: ...: command not found
eu posso continuar usando o terminal- usando
nc -u 127.0.0.1 5144 < file.txt
leva ao mesmo comportamento que usar | acima
linux
data-transfer
netcat
Amil
fonte
fonte
cat file.txt | …
? Que talnc -u 127.0.0.1 5144 < file.txt
?bash: ...: command not found
e usar "<file.txt" faz o mesmo que o | operador (netcat apenas trava)bash: ...: command not found
"? Ou diz "bash: cat: command not found
" ou "bash: nc: command not found
"? E então ele sai para um prompt de shell ou trava? (Encorajo-vos a editar a questão para adicionar esses detalhes, para que as pessoas na Austrália, que só agora estão acordando não tem que ler todos estes comentários para descobrir o que seus sintomas são.)Respostas:
Se você estiver usando a versão GNU do netcat, poderá usar o sinalizador -c para fechar a conexão no EOF.
Se você estiver usando a versão original da ferramenta, poderá usar o sinalizador -q.
Um exemplo para a versão original é:
Eu adicionei "-q 0" ao seu comando original. Isso fecha a conexão após o envio do arquivo.
fonte
-l -p <port>
para ouvir. A versão GNU apenas leva-l <port>
.Supondo que após o envio da conexão EOF permaneça ocioso, você pode usar a
-w timeout
opção, que funciona portimeout
ser igual a zero (ao contrário da-q
opção estúpida ...)fonte
Se você estiver transferindo do FreeBSD para o Windows:
FreeBSD:
cat file.txt | nc -N 10.0.0.5 5144
-N
desligará o soquete de rede após o EOFJanelas:
nc -l -p 5144 > output.txt
-l
parará de ouvir na conexão fechada (ao contrário-L
)fonte