netcat과 병렬로 같은 서버에 요청을 보내려면 xargs를 사용하십시오.


3

간단한 에코 서버에 텍스트를 보내려면 하나의 라이너를 고안하려고합니다. 그러나 여러 개의 연결은 병렬로 진행됩니다. 이것은 내가 노력하고있는 것입니다.

echo -e  A,B,C,D | xargs -d, -i -P 4 echo {} |  nc localhost 7000

그러나, 그것은 잘 작동하지 않습니다. 서버는 네 개의 연결을 받지만 데이터는 없습니다 ( "null").

올바른 xargs 및 netcat 명령은 무엇입니까?

답변:



1

이것은 좀 더 간결 할 수 있습니다. (그리고 읽을 수 있습니다.) GNU 병렬 :

parallel 'echo {} | nc localhost 7000' ::: A B C D

또는:

parallel 'echo {} | nc localhost 7000' ::: {A..D}

0

용도 echo -n 그렇지 않으면 5 개의 연결 대신 4 개의 연결이 생기고 그 중 하나에는 데이터가 없습니다. 서버에서이 옵션이 선택되어 있지 않으면 문제가 발생한 것일 수 있습니다.

echo -n A,B,C,D | xargs -d, -I{} -P 4 -n 1 echo {} | nc localhost 7000

게다가, 리스닝 서버로 netcat을 사용하면, 제대로 작동하는 것처럼 보입니다 :

zhen@sydow:~$ nc -l 7000
A
D
B
C

또한 평행 한 것처럼 보입니다. 나는 순서가 틀린 것을 보았습니다.


0

echo를 반복 할 필요가 없습니다. xargs의 기본 동작입니다. 이 one-liner는 빠른 자체 포함 테스트 역할을하지만 테스트 리스너를 제거하기 전에 &

nc -l 7001 & echo  A B C D | xargs -P4 -n1 | nc localhost 7001

결과 :

amit@deimos:~$ nc -l 7001 & echo A B C D | xargs -P4 -n1 | nc localhost 7001
[6] 7115
D
B
C
A
[6]   Done                    nc -l 7001
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.