組み込みプラットフォームでBusy Box(Busy Box)を実行しています。ハードウェアを再起動するたびに、ボックスの日付を正しく設定したいと思います。永久に時間を節約する方法がないので、毎回時間を設定する必要があります。 LAN接続はありますがSSHはありません。私の現在のアプローチは、「日付」の出力を私のPCのファイルにリダイレクトし、私のハードウェアプラットフォームからtftpを介してファイルにアクセスし、何とかファイルを解析し、その内容を使用して日付を設定することです。ファイルから文字列を取得し、「date」コマンドを使用して設定する方法がわかりません。どんな助けでも大変感謝します。日付を設定する他の方法も機能します。 ntpdを試してみましたが、インターネット接続が不足して失敗しました。
答え1
答え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サーバーに時間を要求します。