Ubuntu에서 부분 패킷 손실이 있는 핑 동작

Ubuntu에서 부분 패킷 손실이 있는 핑 동작

저는 특히 Ubuntu 서버에서 ping을 실행하여 반환되는 변수를 보고 있는데, 제가 찾고 있는 변수는 오류 상태, stdout의 출력, stderr의 출력입니다.

호스트를 ping하면 다음 세 가지 상황이 발생할 수 있습니다.

  1. 호스트는 모든 패킷에 응답합니다(오류 없음).
  2. 호스트가 패킷이 0개인 응답(오류)
  3. 호스트가 일부 패킷에 응답합니다(지정되지 않은 동작).

man ping나는 그것을 몇 번 읽었 지만 이 상황에서 내가 기대해야 할 것을 찾을 수 없는 것 같습니다.

이것을 테스트할 수 없습니다. 제가 액세스할 수 있는 유일한 컴퓨터는 Ubuntu를 실행하는 Linode 가상 서버와 Snow Leopard를 실행하는 Macbook입니다(아마도 내 서버에서 사용하는 PING 프로그램과 동일하지 않을 것입니다).

세 번째 경우의 반환 변수는 무엇을 기대해야 합니까?

답변1

Linux와 Ubuntu에서도 여러 ping 유틸리티를 사용할 수 있습니다. 기본 항목(Ubuntu 메인의 유일한 항목)은 다음에서 나옵니다.아이틸스(iputils-ping). iputils 20100418부터 가능한 반환 상태( pingIPv6 유틸리티 또는 동반 IPv6 유틸리티에 대해)는 다음과 같습니다.ping6

  • 해당 옵션을 전달하면 0입니다 -V.
  • 255 ping권한을 포기할 수 없는 경우(이런 일이 발생해서는 안 됩니다).
  • 주제 이름을 구문 분석하는 동안 오류가 발생하는 경우 1입니다 ping6 -N.
  • 일반 종료 시 0 또는 1:
    • 응답이 수신되지 않은 경우 1입니다.
    • -w1 또는 옵션을 사용하여 마감 기한을 설정했는데 -W수신된 응답 수가 전송된 요청 수보다 적은 경우.
    • 0 그렇지 않은 경우, 즉 마감일이 있고 예상되는 모든 답변을 받은 경우 또는 마감일이 없고 하나 이상의 답변을 받은 경우입니다.
  • 2 기타 모든 경우.

더 세밀하게 구분해야 하는 경우 출력을 구문 분석해야 합니다. 유틸리티는 stderr을 사용하여 치명적인 오류와 일부 경고를 표시하고, stdout을 사용하여 다양한 상태 보고서와 정보 메시지를 표시합니다. 이러한 메시지는 사람이 소비하기 위한 것이므로 쉽게 구문 분석할 수 있을 것으로 기대하지 마십시오. 버전이 출시될 때마다 구문 분석기를 업데이트해야 하거나 다른 플랫폼에서 작업하려는 경우 설정을 기억해야 합니다 LC_MESSAGES=C. ping이 번역된 경우(아직은 아님) 출력을 구문 분석해야 하는 사용 사례는 거의 없습니다. 일반적으로 알아야 할 것은 2 = DNS 조회 실패, 1 = 호스트 응답 없음, 0 = 성공입니다.

답변2

어떤 언어로 코딩하고 있는지 알지 못하면 구체적인 정보를 제공하기 어렵지만 여기에 출력에 대한 약간의 입문서가 있습니다.

error, stdout, stderr은 변수가 아니지만 Unix 바이너리가 반환할 수 있는 출력 유형입니다.

stdout - 이것은 프로그램이 화면(대부분의 경우)이나 파일(리디렉션된 경우) 또는 다른 프로그램에 출력하는 표준 텍스트이며 다음을 사용하여 캡처할 수 있습니다.

program > file

stderr - 이는 오류 스트림에 대한 텍스트 출력이며 stdout 스트림의 리디렉션으로 캡처되지 않은 두 번째 출력입니다. 다음 명령을 사용하여 이를 캡처할 수 있습니다.

program 2> file

오류 - 프로그램이 완료된 후 반환되는 코드입니다. 성공은 일반적으로 0으로 표시됩니다. 다음 명령을 사용하여 이 정보를 캡처할 수 있습니다.

#!/bin/bash
program
echo $?

Wikipedia 페이지에서 스트림에 대한 자세한 정보를 찾을 수 있습니다.표준_스트림. Bash에서 스트림 캡처에 대한 좋은 문서가 있습니다.배쉬 매뉴얼.

관련 정보