1 简单同步(同步单服务器)
shell脚本:
#shell 文件名:syndate.sh
if [ $# == 1 ];then
echo "使用的时间服务器为:$1"
syndate=$(ssh $1 "date '+%Y-%m-%d %H:%M:%S'")
echo "同步的时间为${syndate}"
sudo date -s "$syndate"
sudo hwclock --systohc
echo "时间同步完成"
else
echo "请输入需要使目标用时间的linux服务器ip;如./syndate root@127.0.0.1,即是使用当前服务器时间同步为当前服务器时间";
fi
使用案例:
需修改时间的服务器:127.8.8.8
目标时间服务器:127.8.8.9
在shell文件路径下执行指令:./syndate.sh root@127.8.8.9
2 同步多台服务器时间
##syndate.sh
##./syndate.sh use_user@use_host synuser1@synhost1 synuser2@synhost2 .........
if [ $# == 1 ];then
echo "使用的时间服务器为:$1"
syndate=$(ssh $1 "date '+%Y-%m-%d %H:%M:%S'")
echo "同步的时间为${syndate}"
sudo date -s "$syndate"
sudo hwclock --systohc
if (( $? == 0 )); then
echo "时间同步完成"
fi
else
if [ $# -ge 2 ];then
i=1
tep=1
temppath=""
dateos="root@127.0.0.1"
for param in $*
do
echo -e "================\r\n"${param}"\r\n====================="
if (( $i == 1 )); then
dateos=${param}
echo -e "时间服务器(user@host)为:${dateos}"
fi
if [ $i -ge 2 ]; then
syndate=$(ssh ${dateos} "date '+%Y-%m-%d %H:%M:%S'")
echo -e "同步时间为:"${syndate}"\r\n==========请输入"${param}"密码===============\r\n"
ssh ${param} "sudo date -s \"${syndate}\"; sudo hwclock --systohc"
if (( $? == 0 )); then
echo "时间同步完成"
fi
#rsync -v syndate.sh ${param} ${temppath}
#ssh ${param} "cd ${temppath};sudo chmod 775 syndate.sh;./syndate.sh ${dateos}"
fi
i=$((${i}+${tep}))
done
else
echo -e "请输入需要使目标用时间的linux服务器ip;如./syndate.sh use_user@use_host synuser1@synhost1 synuser2@synhost2 .........\r\n ./syndate.sh 时间服务器用户@时间服务器密码 需同步时间的服务器用户@需同步时间的服务器密码 .........";
fi
if [ $# == 0 ];then
echo -e "请输入需要使目标用时间的linux服务器ip;如./syndate root@127.0.0.1,即是使用当前服务器时间同步为当前服务器时间\r\n 或者./syndate.sh use_user@use_host synuser1@synhost1 synuser2@synhost2 .........";
fi
fi
使用案例:
第一个参数为时间服务器ssh连接,后面的参数为需要同步的服务器ssh连接(可以多个),连接的用户需要具有sudo免密权限(或直接使用root用户)