완전한 출력을 기다리지 않고 예상 프로그래밍에서 ping 명령을 중단하는 방법은 무엇입니까?

완전한 출력을 기다리지 않고 예상 프로그래밍에서 ping 명령을 중단하는 방법은 무엇입니까?

저는 프로그래밍을 처음 접했습니다. 내 스크립트에서는 여러 ping 명령을 실행해야 합니다.

아래 언급된 명령을 실행 중입니다.ping $ip rep 100 size 1500

연결이 성공하면 모든 것이 정상이지만 핑 응답이 오지 않으면 장치에 100번까지 계속 핑을 보내므로 시간이 많이 걸립니다. 이와 같은 명령의 출력이 나오면 이를 중단하고 다음 명령으로 전환하고 싶습니다.

중단하려면 이스케이프 시퀀스를 입력하세요. 2초의 시간 제한으로 100개의 1500바이트 ICMP Echo를 $ip로 보냅니다.

이를 깨기 위해 정규식과 다른 ASCII 코드를 사용해 보았지만 다른 모든 옵션은 장치에 100번 ping을 보낸 후에만 작동했습니다.

어떤 도움이라도 대단히 감사하겠습니다.

답변1

timeout한 가지 옵션은 전체 명령의 최대 기간을 설정하는 것입니다 . 따라서 ping100번의 핑을 실행할 수 있지만 200초(총) 이내에 완료되지 않으면 종료됩니다.

timeout 200 ping $ip rep 100 size 1500

답변2

이것은 테스트되지 않았습니다.

spawn ping ...
expect {
    "Type escape sequence to abort. Sending 100, 1500-byte ICMP Echos to $ip, timeout is 2 seconds:" {
        send -- "\x03"  ;# send Ctrl-C
        exp_continue
    }
    eof
}

답변3

미리 정의된 횟수만큼 핑을 보내는 것은 어떻습니까? 예를 들어

 ping -c 5

관련 정보