找回密码
 立即注册
CeraNetworksBGVM服务器主机交流IP归属甄别会员请立即修改密码
查看: 94|回复: 10

为了同步时间,我绞尽脑汁写了个bash脚本,很粗糙,

[复制链接]

72

主题

97

回帖

604

积分

高级会员

积分
604
发表于 2024-3-6 08:07:51 | 显示全部楼层 |阅读模式
盒子一断电就丢失时间,每次都要设置。。。
查了不少资料,才写下这么段脚本。

我土木工程专业的,非专业勿喷。

[ol]
  • #!/usr/bin/bash
  • #
  • exec 5/dev/udp/ntp.tencent.com/123
  • echo -e -n "\\x1b\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0"  >&5
  • resp=$(timeout 2 dd bs=48 count=1 /dev/null | sed -n "s/.\{40\}\(.\{4\}\)/\1/p")
  • printf -v r1 "%02x" "'${resp:0:1}"
  • printf -v r2 "%02x" "'${resp:1:1}"
  • printf -v r3 "%02x" "'${resp:2:1}"
  • printf -v r4 "%02x" "'${resp:3:1}"
  • r=${r1}${r2}${r3}${r4}
  • d=`expr $((0x${r})) - 2208988800`
  • date -s "@$d"[/ol]复制代码
  • 回复

    使用道具 举报

    47

    主题

    184

    回帖

    677

    积分

    高级会员

    积分
    677
    发表于 2024-3-6 08:57:22 | 显示全部楼层
    https://www.baota.me/post-214.html
    回复

    使用道具 举报

    2

    主题

    110

    回帖

    374

    积分

    中级会员

    积分
    374
    发表于 2024-3-6 08:12:58 | 显示全部楼层
    干嘛不用 GPT
    回复

    使用道具 举报

    2

    主题

    1256

    回帖

    2766

    积分

    金牌会员

    积分
    2766
    发表于 2024-3-6 08:14:28 | 显示全部楼层
    ntpdate不直接就可以了么? 为什么要这么大段?
    回复

    使用道具 举报

    72

    主题

    97

    回帖

    604

    积分

    高级会员

    积分
    604
     楼主| 发表于 2024-3-6 08:15:59 | 显示全部楼层

    icon 发表于 2024-3-6 08:14

    ntpdate不直接就可以了么? 为什么要这么大段?

    盒子空间有限,ntpdate 安装容量太大
    回复

    使用道具 举报

    72

    主题

    97

    回帖

    604

    积分

    高级会员

    积分
    604
     楼主| 发表于 2024-3-6 08:14:00 | 显示全部楼层

    icon 发表于 2024-3-6 08:14

    ntpdate不直接就可以了么? 为什么要这么大段?

    本来打算纯shell语言写,发现没办法实现。

    需要额外的dd sed和expr命令。
    回复

    使用道具 举报

    1

    主题

    3639

    回帖

    8731

    积分

    论坛元老

    积分
    8731
    发表于 2024-3-6 08:17:26 | 显示全部楼层
    盒子同步确实麻烦,而且各家地址不同
    回复

    使用道具 举报

    39

    主题

    353

    回帖

    1093

    积分

    金牌会员

    积分
    1093
    发表于 2024-3-6 08:14:00 | 显示全部楼层
    没玩过盒子,不明白为什么要同步,另外以下是chatgpt 优化过的代码,你自己看对不对,不知道你要用于做什么:

    [ol]
  • #!/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 /dev/null; then
  •     echo "时间已成功同步至: $(date)"
  •   else
  •     echo "设置系统时间失败。"
  •   fi
  • else
  •   echo "从NTP服务器获取时间失败。"
  • fi
  • [/ol]复制代码
  • 回复

    使用道具 举报

    2

    主题

    11

    回帖

    38

    积分

    新手上路

    积分
    38
    发表于 2024-3-6 08:19:39 | 显示全部楼层
    对啊,用gpt很快的
    回复

    使用道具 举报

    72

    主题

    97

    回帖

    604

    积分

    高级会员

    积分
    604
     楼主| 发表于 2024-3-6 08:27:05 | 显示全部楼层

    Sam_Edward 发表于 2024-3-6 08:27

    没玩过盒子,不明白为什么要同步,另外以下是chatgpt 优化过的代码,你自己看对不对,不知道你要用于做什么 ...

    能否使用nc命令创建udp连接?
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|HS2V主机综合交流论坛

    GMT+8, 2024-5-3 14:36 , Processed in 0.146168 second(s), 3 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表