在具有有限 busybox 的嵌入式 Linux 上设置日期(无 ntp)

在具有有限 busybox 的嵌入式 Linux 上设置日期(无 ntp)

我试图在带有 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 设置系统时钟吗?

谢谢你!

答案1

对于本地主机端口 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不支持。不过,您仍然可以获得重定向的日期。

相关内容