Dernière activité 1773419237

使用chrony进行系统的时间检查功能:其中chrony-doctor.sh是个大而全的脚本

Révision 7abe722b60ffac90f890f1e01ff3dc8e698eb901

chrony-tool.sh Brut
1#!/usr/bin/env bash
2
3# ==============================
4# Chrony 管理工具
5# ==============================
6
7CHRONY_CONF="/etc/chrony.conf"
8SERVICE_NAME="chronyd"
9
10if systemctl list-unit-files | grep -q chrony.service; then
11 SERVICE_NAME="chrony"
12fi
13
14pause(){
15 echo
16 read -p "按回车返回菜单..."
17}
18
19print_header(){
20 clear
21 echo "======================================"
22 echo " Chrony 时间同步管理工具"
23 echo "======================================"
24 echo
25}
26
27check_chrony_install(){
28 if ! command -v chronyc &>/dev/null; then
29 echo "未检测到 chrony,请先安装"
30 echo "CentOS/RHEL: yum install chrony"
31 echo "Debian/Ubuntu: apt install chrony"
32 exit 1
33 fi
34}
35
36# 当前时间
37show_time(){
38 print_header
39 echo "系统当前时间"
40 echo "----------------------------"
41 date
42 echo
43 echo "timedatectl 信息"
44 echo "----------------------------"
45 timedatectl
46 pause
47}
48
49# Chrony服务状态
50chrony_status(){
51 print_header
52 echo "Chrony 服务状态"
53 echo "----------------------------"
54 systemctl status $SERVICE_NAME --no-pager
55 pause
56}
57
58# Chrony源
59show_sources(){
60 print_header
61 echo "NTP 来源服务器"
62 echo "----------------------------"
63 chronyc sources -v
64 pause
65}
66
67# Chrony tracking
68show_tracking(){
69 print_header
70 echo "Chrony tracking 信息"
71 echo "----------------------------"
72 chronyc tracking
73 pause
74}
75
76# Chrony统计
77show_activity(){
78 print_header
79 echo "Chrony 活动源"
80 echo "----------------------------"
81 chronyc activity
82 pause
83}
84
85# 强制同步
86force_sync(){
87 print_header
88 echo "尝试立即同步时间..."
89 echo
90
91 chronyc -a makestep
92
93 echo
94 echo "同步完成"
95 pause
96}
97
98# 重启服务
99restart_chrony(){
100 print_header
101 echo "重启 Chrony 服务..."
102 echo
103
104 sudo systemctl restart $SERVICE_NAME
105
106 echo "完成"
107 pause
108}
109
110# 查看配置
111show_config(){
112 print_header
113 echo "当前 chrony.conf"
114 echo "----------------------------"
115 cat $CHRONY_CONF
116 pause
117}
118
119# 修改NTP服务器
120modify_ntp(){
121 print_header
122 echo "当前 NTP server 配置"
123 echo "----------------------------"
124 grep ^server $CHRONY_CONF
125 echo
126
127 read -p "输入新的 NTP 服务器 (例如 ntp.aliyun.com): " ntpserver
128
129 if [ -z "$ntpserver" ]; then
130 echo "未输入"
131 pause
132 return
133 fi
134
135 sudo cp $CHRONY_CONF ${CHRONY_CONF}.bak.$(date +%s)
136
137 sudo sed -i '/^server/d' $CHRONY_CONF
138
139 echo "server $ntpserver iburst" | sudo tee -a $CHRONY_CONF >/dev/null
140
141 echo
142 echo "配置已更新"
143 echo "正在重启 chrony..."
144
145 sudo systemctl restart $SERVICE_NAME
146
147 echo "完成"
148 pause
149}
150
151# 综合检测
152full_check(){
153 print_header
154 echo "系统时间"
155 echo "----------------------------"
156 date
157 echo
158
159 echo "timedatectl"
160 echo "----------------------------"
161 timedatectl
162 echo
163
164 echo "Chrony tracking"
165 echo "----------------------------"
166 chronyc tracking
167 echo
168
169 echo "Chrony sources"
170 echo "----------------------------"
171 chronyc sources -v
172 echo
173
174 echo "Chrony activity"
175 echo "----------------------------"
176 chronyc activity
177 pause
178}
179
180menu(){
181 while true
182 do
183 print_header
184
185 echo "1 查看系统时间"
186 echo "2 查看 Chrony 服务状态"
187 echo "3 查看 NTP 来源 (sources)"
188 echo "4 查看 Chrony tracking"
189 echo "5 查看 Chrony activity"
190 echo "6 强制同步时间"
191 echo "7 查看 chrony.conf"
192 echo "8 修改 NTP 服务器"
193 echo "9 重启 Chrony"
194 echo "10 综合检测"
195 echo
196 echo "0 退出"
197 echo
198 read -p "请选择操作: " choice
199
200 case $choice in
201 1) show_time ;;
202 2) chrony_status ;;
203 3) show_sources ;;
204 4) show_tracking ;;
205 5) show_activity ;;
206 6) force_sync ;;
207 7) show_config ;;
208 8) modify_ntp ;;
209 9) restart_chrony ;;
210 10) full_check ;;
211 0) exit ;;
212 *) echo "无效选项"; sleep 1 ;;
213 esac
214 done
215}
216
217check_chrony_install
218menu