#!/usr/bin/env bash # ============================== # Chrony 管理工具 # ============================== CHRONY_CONF="/etc/chrony.conf" SERVICE_NAME="chronyd" if systemctl list-unit-files | grep -q chrony.service; then SERVICE_NAME="chrony" fi pause(){ echo read -p "按回车返回菜单..." } print_header(){ clear echo "======================================" echo " Chrony 时间同步管理工具" echo "======================================" echo } check_chrony_install(){ if ! command -v chronyc &>/dev/null; then echo "未检测到 chrony,请先安装" echo "CentOS/RHEL: yum install chrony" echo "Debian/Ubuntu: apt install chrony" exit 1 fi } # 当前时间 show_time(){ print_header echo "系统当前时间" echo "----------------------------" date echo echo "timedatectl 信息" echo "----------------------------" timedatectl pause } # Chrony服务状态 chrony_status(){ print_header echo "Chrony 服务状态" echo "----------------------------" systemctl status $SERVICE_NAME --no-pager pause } # Chrony源 show_sources(){ print_header echo "NTP 来源服务器" echo "----------------------------" chronyc sources -v pause } # Chrony tracking show_tracking(){ print_header echo "Chrony tracking 信息" echo "----------------------------" chronyc tracking pause } # Chrony统计 show_activity(){ print_header echo "Chrony 活动源" echo "----------------------------" chronyc activity pause } # 强制同步 force_sync(){ print_header echo "尝试立即同步时间..." echo chronyc -a makestep echo echo "同步完成" pause } # 重启服务 restart_chrony(){ print_header echo "重启 Chrony 服务..." echo sudo systemctl restart $SERVICE_NAME echo "完成" pause } # 查看配置 show_config(){ print_header echo "当前 chrony.conf" echo "----------------------------" cat $CHRONY_CONF pause } # 修改NTP服务器 modify_ntp(){ print_header echo "当前 NTP server 配置" echo "----------------------------" grep ^server $CHRONY_CONF echo read -p "输入新的 NTP 服务器 (例如 ntp.aliyun.com): " ntpserver if [ -z "$ntpserver" ]; then echo "未输入" pause return fi sudo cp $CHRONY_CONF ${CHRONY_CONF}.bak.$(date +%s) sudo sed -i '/^server/d' $CHRONY_CONF echo "server $ntpserver iburst" | sudo tee -a $CHRONY_CONF >/dev/null echo echo "配置已更新" echo "正在重启 chrony..." sudo systemctl restart $SERVICE_NAME echo "完成" pause } # 综合检测 full_check(){ print_header echo "系统时间" echo "----------------------------" date echo echo "timedatectl" echo "----------------------------" timedatectl echo echo "Chrony tracking" echo "----------------------------" chronyc tracking echo echo "Chrony sources" echo "----------------------------" chronyc sources -v echo echo "Chrony activity" echo "----------------------------" chronyc activity pause } menu(){ while true do print_header echo "1 查看系统时间" echo "2 查看 Chrony 服务状态" echo "3 查看 NTP 来源 (sources)" echo "4 查看 Chrony tracking" echo "5 查看 Chrony activity" echo "6 强制同步时间" echo "7 查看 chrony.conf" echo "8 修改 NTP 服务器" echo "9 重启 Chrony" echo "10 综合检测" echo echo "0 退出" echo read -p "请选择操作: " choice case $choice in 1) show_time ;; 2) chrony_status ;; 3) show_sources ;; 4) show_tracking ;; 5) show_activity ;; 6) force_sync ;; 7) show_config ;; 8) modify_ntp ;; 9) restart_chrony ;; 10) full_check ;; 0) exit ;; *) echo "无效选项"; sleep 1 ;; esac done } check_chrony_install menu