this Stack Overflow question으로 스핀 오프하기 때문에 몇 가지 조정을 제외하고는 같은 결과를 얻고 싶습니다.Netcat을 사용하는 소켓 서버에 바이너리 파일을 한 줄씩 전송하십시오.
호스트에 연결하여 한 줄씩 이진 파일을 보내고 각 줄 사이에 몇 초의 지연 시간을두고 싶습니다. 동일한 연결에 있어야합니다. 보내려는 문자열은 대부분 텍스트 기반이지만 줄에 인쇄 할 수없는 문자가 몇 개 있습니다.
<null>e<null><null>00326513,6598,no,8,,2z<null>
<null>
값이 HEX 값 0x00
입니다 :
이
내가 (파일 당 수천 줄의)를 보낼 문자열/라인의 예입니다.나는 첫 번째 항목에서 내 질문에 rewitten했지만 내 질문에 텍스트 만 다음이었다로 @mzet 내 원래의 질문에 내가 대답하지만 나중에 어떤 안에 내가 볼 수없는 내 문자열이 0x00
문자를 가지고 있다는 것을 발견 처음에. 그의 대답이 기초로 작용하기를 원한다. 거의 효과가 있다고 생각하지만, 이것이 내가 그의 공헌이 아니라 내 조정이 될 수 있도록 비틀기가 필요할 수도있다.
나는 3 개 라인을 가진 파일이있는 경우 : 다음 나는 @mzet에게 대답을 꼬집고 \x00
내 파일 내부의 <null>
값을 대체 할 수 있다고 생각하고 echo
명령에 -e
을 설정
<null>e<null><null>00370513,6598,no,8,,2z<null>
<null>f<null><null>00891548,6598,yes,8,,3z<null>
<null>f<null><null>00129525,6598,yes,8,,2z<null>
:
를[[email protected]]# mkfifo /tmp/fifoIn; cat /tmp/fifoIn | nc localhost 2222 &
[[email protected]]# cat myfile | while read line; do echo -ne $line; sleep 2; done > /tmp/fifoIn
내가 그렇게 할 때, 나는 서버 측에 x00
을 볼 수
[[email protected]]# nc -l 2222
x00ex00x0000370513,6598,no,8,,2zx00
x00fx0000891548,6598,yes,8,,3zx00
x00fx00x0000129525,6598,yes,8,,2zx00
원하는대로 이진 (텍스트?) 파일을 보낼 수 있습니까? 그리고 한 줄씩 파일을 보낼 수 없다면 한 번에 여러 번 문자열을 보낼 수 있습니까? 엄밀히 말하면 필자는 동일한 문자열을 반복하여 관리 할 수 있기 때문에 고유하거나 파일에있을 필요가 없습니다.
편집 # 1
내 스크립트는 서버에 하나 개의 라인을 보내는 이유는 나중에 그냥 일시 정지된다 (?) 영원히 (I는 4 개 라인을 기대). 클라이언트 (나 서버)의 연결을 닫습니다하지만 오류가 제공되지 않습니다
rm -f /tmp/fifofile
mkfifo /tmp/fifofile
cat /tmp/fifofile | nc 192.168.20.6 5000 &
sleep 1
i="0"
while [ $i -lt 4 ]
do
echo "$i"
echo -ne "\x00e\x00\x00001212dsfdsfdsfsdfsdfsdfdsf\x00" | tee /tmp/fifofile
sleep 1
i=$[$i+1]
done
정상적으로 작동하는 것 같습니다. 며칠 이내에 문제가 해결되지 않으면 답변을 수락합니다. 또한 각 줄 이후에 줄 바꿈 문자를 보내는 것을 피할 수 있는지 알고 있습니까? – DHS
while 루프에서'echo' 대신'echo -n'을 시도하십시오 – mzet
제 편집을 참조하십시오 – DHS