Date

在帶有有限busybox的嵌入式Linux上設置日期(無ntp)

  • July 2, 2020

我試圖在帶有busybox的嵌入式linux上啟動後自動設置日期(我沒有RTC)。ntp我在busybox中也沒有命令,也沒有curl。我wget的也很有限,我似乎無法獲得標題。

我見過多種使用curlwget解析 google.com 的標頭來獲取目前日期的方法。

但我的wget命令不支持--server-response選項:

BusyBox v1.21.0 (2014-11-25 08:52:04 CET) multi-call binary.

Usage: wget [-c|--continue] [-s|--spider] [-q|--quiet] [-O|--output-document FILE]
       [--header 'header: value'] [-Y|--proxy on/off] [-P DIR]
       [-U|--user-agent AGENT] [-T SEC] URL...

Retrieve files via HTTP or FTP

       -s      Spider mode - only check file existence
       -c      Continue retrieval of aborted transfer
       -q      Quiet
       -P DIR  Save to DIR (default .)
       -T SEC  Network read timeout is SEC seconds
       -O FILE Save to FILE ('-' for stdout)
       -U STR  Use STR for User-Agent header
       -Y      Use proxy ('on' or 'off')

我在某個地方有這個解決方案,但我只有 POSIX shell,沒有 bash,所以它不起作用(can't create /dev/tcp/www.google.com/80: nonexistent directory):

#!/bin/bash
exec 5<>/dev/tcp/www.google.com/80
cat mypostfile >&5
cat <&5 # reply

任何想法如何我仍然可以從某個地方檢索目前日期,以便我可以使用我的busybox設置我的系統時鐘?

謝謝!

對於 localhost 埠 8000 的代理,如果您的 busybox 有 telnet,您可以嘗試

( echo 'HEAD http://www.google.com/ HTTP/1.0'
 echo
 sleep 2 ) |
busybox telnet localhost 8000 |
grep 'Date:'

其中 sleep 命令是近似的,並且過早停止 telnet 關閉連接。

我很驚訝這仍然可以在沒有重定向到 https 的情況下工作,例如,busybox wget它不支持。你仍然會得到重定向的日期。

引用自:https://unix.stackexchange.com/questions/494401