시간 초과를 사용하고 백그라운드에서 ping을 실행하고 통계를 파일에 저장합니다.

시간 초과를 사용하고 백그라운드에서 ping을 실행하고 통계를 파일에 저장합니다.

핑 테스트를 자동화하는 스크립트를 작성 중입니다. 수백 개의 엔드포인트가 서로 ping하고 있고 ping이 멈춰서 스크립트 실행이 중지되는 것을 원하지 않기 때문에 제한 시간을 사용하고 백그라운드에서 ping을 실행합니다. 또한 핑 통계를 파일에 저장하고 싶습니다. 먼저 다음 명령을 시도했습니다.

timeout 20s ssh hostA "ping -c 30 -I 192.6.2.50 192.6.2.28 " | awk '{print "from 50 to 28 |",$0;}' &

내가 얻은 결과가 화면에 표시되는데, 이는 내가 예상했던 것과 정확히 같습니다.

from 50 to 28 | PING 192.6.2.28 (160.6.24.28) from 192.6.2.50 : 56(84) bytes of data.
from 50 to 28 | 64 bytes from 192.6.2.28: icmp_seq=1 ttl=64 time=0.264 ms
from 50 to 28 | 64 bytes from 192.6.2.28: icmp_seq=2 ttl=64 time=0.245 ms
from 50 to 28 | 64 bytes from 192.6.2.28: icmp_seq=3 ttl=64 time=0.220 ms
from 50 to 28 | 64 bytes from 192.6.2.28: icmp_seq=4 ttl=64 time=0.214 ms
from 50 to 28 | 64 bytes from 192.6.2.28: icmp_seq=5 ttl=64 time=0.123 ms
....
Killed by signal 15.

하지만 이 출력을 파일에 저장하려고 하면 실패합니다. 아래는 제가 사용한 명령입니다.

timeout 20s ssh cic-1 "ping -c 30 -I 192.6.2.50 192.6.2.28 " | awk '{print "from 50 to 28",$0;}' | tee -i -a path/timeout_test.txt &

하지만 timeout_test.txt에는 아무것도 나오지 않습니다.

또한 아래 명령을 시도했는데 명령이 실행되기 전에 timeout_test.txt를 만들었습니다.

timeout 20s ssh cic-1 "ping -c 30 -I 192.6.2.50 192.6.2.28 " | awk '{print "from 50 to 28",$0;}' >> path/timeout_test.txt &

하지만 아직 아무것도 얻지 못했습니다.

답변1

아마도 내 첫 번째 생각은 SSH 서버/원격 PC에서 ping 명령을 실행하고 있으므로 결과는 해당 원격에 있는 파일에 대한 tee -a 명령에 의해 사용되어야 한다는 것입니다. 그런데, 나는 하나의 쉘 라인에서 모든 것을 삭제/파이프하는 것보다 중간 파일을 사용한 다음 로그 결과를 처리하고 싶습니다.

관련 정보