2014-04-22 2 views
4

사용자가 (단일) NTP 서버 주소를 구성 할 수있는 임베디드 OpenSUSE 12.3 시스템에서 작업하고 있습니다. 특정 서버와 통신하는 방법에 대한 사용자 피드백을 제공 할 수 있어야합니다. 서버 주소가 유효합니까? NTP가 서버에 접속할 수 없습니까? 서버에 쿼리하고 있습니까? 아니면 완전히 동기화 되었습니까? (참고 : NTP 그때는 그것이 동기화하는 방법 다만 걱정하지 않는다 동기라고 생각하면.)NTP 통신 상태를 결정하는 방법

을 지금 내가 작성한 bash는 스크립트를 ntpq -np의 출력을 구문 분석 :

  • 출력하는 경우를 출력은 출력이 ".INIT." 다음 NTPD는 아직 서버
  • O를 만약에 연결되지 않은이 포함 된 경우 "No association ID's returned"는 다음 서버 주소가
  • 무효가 포함되어있는 경우 다음 NTPD는
  • 를 실행하지 않는 "ntpq: read: Connection refused" 포함 utput은 "*"으로 시작하는 행을 포함하지 않으며 서버를 쿼리합니다.
  • 그렇지 않으면 우리는 동기화됩니다.

분명히 말하지만, 이것은 뒤쪽의 고통이며 플랫폼에 크게 좌우됩니다. 더 나은 솔루션을 원합니다.

외부 응용 프로그램에서 사용할 수있는 빌드 된 ntp 소스 트리 안에 libntpq.a가 있지만 공식 릴리스가있을 때까지는 플랫폼 의존성에 대한 새로운 전환으로 바뀌 었음을 이해합니다.

NTP 클라이언트의 현재 통신 상태를 확인하는 공식 방법이 있습니까? 단 하나의 서버 만 구성됩니다.

답변

4

ntpstat은 어떻습니까? 다음은 명령이 실행될 때 exit/return 값입니다.

  • 종료 상태 0 - 시계가 동기화됩니다.
  • 종료 상태 1 - 시계가 동기화되지 않습니다.
  • 종료 상태 2 - NTPD는

체크 아웃 페이지 Verify that my NTP is working

+0

이것은 좀 더 포괄적 인/집중 도구의 기초가 될 수 있지만 현재는 시작일뿐입니다. 찾기 힘들다. 그러나 다른 답변은 없습니다 ... 당신은 이것이 애매한 필요는 아니라고 생각할 것입니다 ... –

2

또 다른 옵션은 NTP-대기 명령을 사용하는 것입니다을 접촉하지 않은 경우 클럭 상태가, 예를 들어, indeterminant 경우. ntp-wait는 다른 작업을 수행하기 전에 시스템 시간을 동기화해야하는 시작 스크립트에서 일반적으로 사용됩니다. verbose 옵션을 ntp-wait에 전달하면 상태가 출력되고 동기화가 실패하면 오류가 출력됩니다. ntp-wait에게 동기화를 기다리는 시간을 알려주고 오류를 반환 할 수도 있습니다.

ntpstat과 달리 ntp-reference는 ntp 참조 구현에 의해 제공되므로 ntpstat를 설치/사용할 수 있다고 기대하는 것보다 이식성이 뛰어납니다.

+1

방금 ​​내 시스템에서 ntp-wait를 시도했으며 "ntpq -np"가 명확하게 표시 될 때 "ntp가 동기화되지 않았습니다"라는 메시지를보고합니다. 그것이 ntp 서버와 동기화되었음을 보여줍니다. 나는 ntp-wait의 소스 (Perl)를 보았고, 단지'ntpq -c "rv 0 state"'의 출력을 파싱하는 중이다.해당 ntpq 명령의 현재 출력은'*** 요청 변수가 서버에 알려지지 않았습니다 '이지만 ntp-wait의 코드는'요청 변수가 알려지지 않았습니다'를 확인하고 있습니다). 그래서, 나는 그걸로 무엇이 있는지 모른다. –