別のコンピュータでLinuxベースのコンピュータの日付を設定してみてください。

別のコンピュータでLinuxベースのコンピュータの日付を設定してみてください。

組み込みプラットフォームでBusy Box(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 +%sサイドは、日付文字列を取得し、ソースから受け取った値に置き換える必要がある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サーバーに時間を要求します。

関連情報