장치에 4개의 TCP 소켓이 연결되어 있습니다.
이것들은 다음을 사용하여 만들어졌습니다.
exec 3<>/dev/tcp/IP/PORT
exec 4<>/dev/tcp/IP/PORT
exec 5<>/dev/tcp/IP/PORT
exec 6<>/dev/tcp/IP/PORT
서브셸에서 파일 설명자에서 읽었습니다.
cat <&4 | while read LINE; do
echo -n "FD4 $LINE" | xxd -ps | sed 's/../&\ /g' > somefile.txt
done &
나중에 사용할 수 있도록 파일로 전달하세요.
하지만 특정 유형의 메시지에 문제가 있습니다.
간단한 사용
cat <&6 | xxd -ps
다음(일부 매개변수)이 표시됩니다.
006ec94430020000c090006800c903470000000000040000209f00000000
000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000
하지만 그것을 사용하기 위해 파일이나 변수로 전달할 수는 없습니다.
다양한 방법을 시도했지만 해결책을 찾을 수 없습니다.
누군가 이런 뉴스를 처리하는 방법을 알고 있기를 바랍니다.
답변1
코드에 몇 가지 문제가 있습니다.
- 읽는 각 줄에서
somefile.txt
이전 줄에 넣은 내용을 지우고 다시 만듭니다. 대신 사용 하거나 키워드 뒤로>> somefile.txt
이동 해야 합니다 .> somefile.txt
done
- 덤프 에 따라 바이너리 데이터를 수신하는 것으로 보이지만
xxd
새 줄로 구분된 텍스트 데이터인 것처럼 처리하고 있습니다. 이진 데이터에서는 올바르게 작동read
하지 않습니다.echo
단순히 파일 설명자의 내용을 파일에 전달 xxd
하고 결과를 파일에 저장하면 어떨까요? 즉, 그냥 이렇습니다:
xxd -ps <&4 | sed 's/../&\ /g' > somefile.txt &