|
|
发表于 2024-3-6 08:27:05
|
显示全部楼层
没玩过盒子,不明白为什么要同步,另外以下是chatgpt 优化过的代码,你自己看对不对,不知道你要用于做什么:
- #!/usr/bin/bash
- # NTP服务器地址和端口
- NTP_SERVER="ntp.tencent.com"
- NTP_PORT=123
- # 创建UDP连接
- exec 5<>/dev/udp/${NTP_SERVER}/${NTP_PORT}
- # 发送NTP请求包 (NTP协议指定的格式)
- printf '\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' >&5
- # 读取并处理NTP响应
- if read -u 5 -t 2 -r -n 48 response; then
- # 提取时间戳并转换为十进制
- time_stamp=$(printf '%d\n' "'${response:43:1}'")
- for ((i=1; i<4; i++)); do
- printf -v temp '%d' "'${response:43+i:1}'"
- time_stamp=$((time_stamp*256 + temp))
- done
- # 转换NTP时间戳到Unix时间戳
- unix_time=$((time_stamp - 2208988800))
- # 设置系统时间
- if date -s "@$unix_time" > /dev/null; then
- echo "时间已成功同步至: $(date)"
- else
- echo "设置系统时间失败。"
- fi
- else
- echo "从NTP服务器获取时间失败。"
- fi
复制代码 |
|