CentOS使用chrony服务进行时间同步源设置脚本
#!/bin/bash
# Created: 2024-11-26
# Function: Check and Set OS time sync source to 10.0.11.100
# FileName: centos_set_time_source_to_ad.sh
# Creator: Anster
# Usage:
# curl http://webserver-ip/scripts/centos_set_time_source_to_ad.sh | bash
timeserver='10.0.11.100'
rpm -qi chrony > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Install chrony package for time sync service"
yum install -y chrony
else
echo "chrony service already installed"
fi
chronyc sources | grep "${timeserver}" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "time sync source already set to ${timeserver}"
else
# set time sync source to ad
sed -i '/^server [0-3]\./s/^/#/' /etc/chrony.conf
sed -i "/^#server 3\./a server ${timeserver} iburst" /etc/chrony.conf
echo "finish set time source to ${timeserver}"
# restart chronyd service
systemctl restart chronyd
systemctl status chronyd
chronyc sources
fi
脚本概述
这个 Shell脚本用于在 CentOS 服务器上检查并设置时间同步源。它会将时间同步源设置为指定的服务器(10.0.11.100)。
功能说明
- 检查并安装 chrony 包(如果尚未安装)
- 验证当前时间同步源
- 如果需要,将时间同步源修改为指定服务器
- 重启 chronyd 服务并验证设置
使用方法
远程执行(推荐)
使用以下命令直接从 Web 服务器下载并执行脚本:
curl http://webserver-ip/scripts/centos_set_time_source_to_ad.sh | bash
注意:请将 webserver-ip
替换为实际的 Web 服务器 IP 地址。
本地执行
-
下载脚本到本地:
bash curl -O http://webserver-ip/scripts/centos_set_time_source_to_ad.sh
-
赋予脚本执行权限:
bash chmod +x centos_set_time_source_to_ad.sh
-
执行脚本:
bash ./centos_set_time_source_to_ad.sh
脚本主要操作说明
-
检查 chrony 包
- 使用rpm -qi chrony
命令检查 chrony 包是否已安装
- 如果未安装,使用yum install -y chrony
安装 -
检查时间同步源
- 使用chronyc sources
命令检查当前时间同步源
- 如果已设置为指定服务器(10.0.11.100),脚本将退出 -
修改时间同步源
- 如需修改,脚本会编辑/etc/chrony.conf
文件
- 注释掉默认的服务器设置
- 添加新的服务器设置(10.0.11.100) -
重启服务
- 重启 chronyd 服务
- 检查服务状态
- 验证新的时间同步源设置
注意事项
- 执行脚本需要 root 权限
- 确保服务器能够访问指定的时间同步服务器(10.0.11.100)
- 脚本执行可能会短暂影响系统时间同步,请在适当的时间执行
- 建议在执行脚本前备份
/etc/chrony.conf
文件
故障排除
如果脚本执行后时间同步仍有问题,请检查:
- 网络连接是否正常
- 防火墙是否允许 NTP 流量(UDP 端口 123)
- 时间同步服务器(10.0.11.100)是否可用
可以使用 chronyc tracking
命令查看详细的同步状态。