Shell
BusyBox 日期:在沒有 ntpdate 的情況下從 Internet 檢索日期
嵌入式 poky linux,不可
ntpdate
用。看起來以下命令都不適合:
# date -s "$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-)" date: invalid date '08 Mar 2021 13:22:34 GMT'
# date -s "$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-6)" date: invalid date '08 Mar 2021 13:22:34'
#date +"%d %b %Y %H:%M:%S" -s "$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-6)" date: invalid date '08 Mar 2021 13:22:34'
更新
BusyBox 日期僅接受以下日期格式:
@seconds_since_1970 hh:mm[:ss] [YYYY.]MM.DD-hh:mm[:ss] YYYY-MM-DD hh:mm[:ss] [[[[[YY]YY]MM]DD]hh]mm[.ss]
如果該選項在您使用的 BusyBox 版本中可用,則可以按照steeldriver
-D
的建議使用此命令:busybox date -d '08 Mar 2021 13:22:34' -D '%d %b %Y %H:%M:%S'
最後我從Google解析了時間字元串,把它放在一個
busybox date
友好的格式(YYYY-mm-dd HH:MM:SS
)中。希望將來有人會發現這很有用。#!/bin/sh monthnumber() { month=$1 months="JanFebMarAprMayJunJulAugSepOctNovDec" tmp=${months%%$month*} month=${#tmp} monthnumber=$((month/3+1)) printf "%02d\n" $monthnumber } G_DATE="$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-6)" G_SPLIT=($(echo $G_DATE | tr " ")) BB_DATE="${G_SPLIT[2]}-$(monthnumber ${G_SPLIT[1]})-${G_SPLIT[0]} ${G_SPLIT[3]}" date -s "$BB_DATE"
monthnumber()
函式取自https://stackoverflow.com/a/41385862/9815377
也許你可以更新busybox。我得到了 V1.30 並且命令有效