UDP 패킷에 짧은 값을 하나만 보내고 싶지만 명령을 실행합니다.
echo -n "hello" | nc -4u localhost 8000
서버가 hello 항목을 받고 있음을 알 수 있지만 netcat 명령을 종료하려면 Ctrl+ c를 눌러야 합니다.
Hello 를 보낸 후 어떻게 종료 할 수 있습니까?
죄송합니다. 맨 페이지를 다시 읽고 -q
옵션을 찾았습니다 .
echo -n "hello" | nc -4u -q1 localhost 8000
작동합니다 (1 초 후에 종료 됨).
어떤 이유로 -q0
.
답변
bash를 사용하는 경우 다음과 같이 작성하는 것이 좋습니다.
echo -n "hello" >/dev/udp/localhost/8000
그리고 netcat의 모든 특이성과 비 호환성을 피하십시오.
이것은 또한 다른 호스트로의 전송도 작동합니다. 예 :
echo -n "hello" >/dev/udp/remotehost/8000
이것은 파일 시스템의 “실제”장치가 아니라 bash “특수” 별칭 입니다. Bash 매뉴얼 에 추가 정보가 있습니다 .
답변
-q1
내 netcat 에서 옵션을 찾지 못했습니다 . 대신 -w1
옵션을 사용했습니다 . 다음은 udp 패킷을 호스트 및 포트로 보내기 위해 수행 한 bash 스크립트입니다.
#!/bin/bash
def_host=localhost
def_port=43211
HOST=${2:-$def_host}
PORT=${3:-$def_port}
echo -n "$1" | nc -4u -w1 $HOST $PORT
답변
현재 netcat (v0.7.1)에는 -c 스위치가 있습니다.
-c, --close close connection on EOF from stdin
그 후,
echo "hi" | nc -cu localhost 8000
트릭을해야합니다.
답변
Netcat은 개행마다 하나의 패킷을 보냅니다. 그래서 당신은 괜찮습니다. 더 복잡한 작업을 수행하면 다른 작업이 필요할 수 있습니다.
나는 이것을 깨달았을 때 Wireshark를 속이고 있었다. 도움이되는지 모르겠습니다.
답변
나는 같은 문제가 있었지만 -w 0
옵션을 사용 하여 하나의 패킷 만 보내고 종료했습니다. 다음 명령을 사용해야합니다.
echo -n "hello" | nc -4u -w0 localhost 8000
답변
