netcat을 사용하여 텍스트 파일 내용을 서버로 전송 하시겠습니까?


13

포트 5144에서 수신 대기하는 데몬 프로세스가 있는데 수정할 수 없습니다.

netcat을 사용하여 텍스트 파일의 내용을 서버로 보내려고하지만 +를 netcat누를 때까지 터미널이 중단됩니다 .CtrlC

cat file.txt | nc -u 127.0.0.1 5144

내가 그것을 작동시킬 수있는 유일한 방법 nc -u 127.0.0.1 5144은 파일의 내용을 수동으로 실행 하고 복사 / 붙여 넣는 것입니다.

어떤 아이디어?


참고 사항 :

  1. cat file.txt | ...에 리드 bash: ...: command not found내가 터미널을 계속 사용할 수 있으며,
  2. 를 사용 nc -u 127.0.0.1 5144 < file.txt하면 | 이상

당신이 말할 때 어떻게됩니까 cat file.txt | …? 어때요 nc -u 127.0.0.1 5144 < file.txt?
Scott

-u를 사용해야합니까? 또한 다른 쪽 인 nc -l -p를 시도 했습니까? 그리고 nc -p 시도 했습니까? (-l -p를 사용하는 하나의 nc가 있고 -l없이 -p를 사용하는 것으로 생각되는 nc가 있습니다). 클라이언트 / 초기 측 중 하나만 표시했습니다. 서버 쪽에서 무엇을하고 있습니까? 테스트로 시도하여 nc가 포트 1234를 수신하고 cat ... nc ... 작동합니다. 나는 전에 그것을 본 적이 없기 때문에 이것은 약한 것일 수도 있지만, 아마도이 특정 데몬에 특유한 것이있을 수 있습니다.
barlop

데몬을 수정할 수 없습니다. @Scott : bash: ...: command not found"<file.txt"를 사용하면 | 운영자 (netcat이 멈춤)
Amil

좀 더 정확하게 말씀해 주시겠습니까? " bash: ...: command not found" 라고 말합니까 ? 아니면 " bash: cat: command not found"또는 " bash: nc: command not found"로 표시됩니까? 그런 다음 쉘 프롬프트로 종료됩니까, 아니면 중단됩니까? (자세한 내용을 추가하기 위해 질문을 편집하는 것이 좋습니다. 지금 깨어 난 호주 사람들은 증상을 파악하기 위해이 모든 의견을 읽을 필요는 없습니다.)
Scott

@Scott : 감사합니다. 귀하의 질문에 대한 답변을 원본 질문에 통합했습니다. 어떤 아이디어?
Amil

답변:


7

netcat의 GNU 버전을 사용하는 경우 -c 플래그를 사용하여 EOF에서 연결을 닫을 수 있습니다.

-c, --stdin에서 EOF에 대한 밀접한 연결 닫기

원래 버전의 도구를 사용중인 경우 -q 플래그를 사용할 수 있습니다.

stdin 및 sec 지연시 EOF 후 -q 초 종료

원본 버전의 예는 다음과 같습니다.

cat file.txt | nc -u -q 0 127.0.0.1 5144

원래 명령에 "-q 0"을 추가했습니다. 파일이 전송 된 후 연결이 닫힙니다.


구별하기 위해 : 원본 버전은 -l -p <port>청취 를 위해 지정해야하는 버전입니다 . GNU 버전은 그냥 걸립니다 -l <port>.
tueftl

1

EOF 연결을 보낸 후에 유휴 상태로 있다고 가정하면 -w timeout옵션 을 사용할 수 있습니다.이 옵션 timeout은 0과 같습니다 (멍청한 -q옵션 과 달리 ...)

cat file.text | nc -u localhost 4300 -w0

0

FreeBSD에서 Windows로 전송하는 경우 :

FreeBSD : cat file.txt | nc -N 10.0.0.5 5144

-N EOF 후 네트워크 소켓을 종료합니다

윈도우 : nc -l -p 5144 > output.txt

-l연결에서 수신이 중지됩니다 폐쇄 (달리 -L)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.