다른 컴퓨터에서 Linux 기반 컴퓨터의 날짜를 설정해 보세요.

다른 컴퓨터에서 Linux 기반 컴퓨터의 날짜를 설정해 보세요.

임베디드 플랫폼에서 비지 박스(Busy Box)를 실행하고 있습니다. 하드웨어를 재부팅할 때마다 상자의 날짜가 올바르게 설정되기를 원합니다. 영구적으로 시간을 절약할 수 있는 방법이 없어서 매번 시간을 설정해야 합니다. LAN 연결은 있지만 SSH는 없습니다. 나의 현재 접근 방식은 "날짜"의 출력을 내 PC의 파일로 리디렉션하고 내 하드웨어 플랫폼에서 tftp를 통해 파일에 액세스한 다음 어떻게든 파일을 구문 분석하고 해당 내용을 사용한 다음 날짜를 설정하는 것입니다. 파일에서 문자열을 가져온 다음 "date" 명령을 사용하여 설정하는 방법을 모르겠습니다. 어떤 도움이라도 대단히 감사하겠습니다. 날짜를 설정하는 다른 방법도 작동합니다. ntpd를 사용해 보았지만 인터넷 연결이 부족하여 실패했습니다.

답변1

NTP(Network Time Protocol)은 날짜를 얻는 표준 방법입니다. BusyBox 시스템에서는 다음을 사용할 수 있습니다.NTP 클라이언트.

네트워크 어딘가에 NTP 서버가 필요합니다.

답변2

임베디드 시스템에서 네트워크 시간 프로토콜(Network Time Protocol)을 사용하려면 간단한 명령을 실행하십시오.NTP 데몬(서버)는 LAN에 로컬입니다(예: 현재 동기화하려는 컴퓨터). 전부는 아니지만 대부분의 배포판에는 비슷한 패키지가 있습니다.ntpd 열기또는네트워크 전송 프로토콜NTP 서버를 제공합니다.

여전히 구문 분석된 출력을 고집한다면 date가장 좋은 접근 방식은 +%s출력과 입력 모두에 공통(1970년 이후 초) 형식을 사용하는 것입니다. 이렇게 하려면 날짜를 입력하세요.원천date +%sside는 날짜 문자열을 가져오고 소스에서 받은 값으로 대체되어야 하는 date -s "@$VALUE"비지 박스 시스템에서 실행하는 데 사용됩니다 . $VALUE이 접근 방식은 결국 통신 및 명령 실행 시간(NTP를 사용할 때 둘 다 최소화됨)으로 인해 결과가 왜곡됩니다.

답변3

cron 작업을 사용하면 1분 단위로 /tftp 디렉터리에 파일을 쓸 수 있습니다.

* * * * * date "+%m%d%H%M%Y.%S" > /tftp/currdate.txt 2>/dev/null

이 파일의 내용은 날짜/시간을 설정하기 위해 date 명령에 필요한 것과 동일한 형식의 단일 값입니다.

bash$ cat currdate.txt
102600052011.00

비지박스 측에서는 tftp로 파일을 가져와서 처리하면 됩니다.

cat currdate.txt | while read date; do
    date $date
done

HTTP가 옵션인 경우 호출 시 날짜만 반환하도록 PHP 스크립트를 설정하고 스크립트가 비지박스 측에서 해당 URL을 폴링하고 결과를 처리하도록 할 수 있습니다. 이 경우 날짜의 세분성이 더 가까워집니다.

TFTP를 사용하면 1분 안에 완료됩니다. 바라건대 이것은 충분히 가깝습니다.

답변4

귀하의 의견을 바탕으로.

답변해 주셔서 감사합니다. 내 플랫폼에서는 rdate를 사용할 수 없습니다. 또한 보드에서 인터넷에 접속할 수 없기 때문에 ntp를 사용할 수 없습니다. 다른 컴퓨터의 날짜 출력을 구문 분석하고 현재 여기에 설정하는 방법에 더 관심이 있습니다.

문제에 대한 해결책은 LAN에 있는 다른 컴퓨터를 시간으로 설정하는 것입니다.섬기는 사람-- 머신은 외부 시간 소스와 자체적으로 동기화할 수 있도록 인터넷에 액세스할 수 있어야 합니다(꼭 필요한 것은 아니지만 바람직함). NTP 서버는 LAN에서 시계를 브로드캐스트하도록 구성하거나(5분마다 1개의 UDP 패킷) 요청 시 액세스할 수 있습니다.

당신의바쁜 상자LAN 접속으로 설치 가능(인터넷 접속 불가)NTP 클라이언트브로드캐스트에서 시간을 가져오거나 필요한 경우 LAN 서버에 시간을 요청합니다.

관련 정보