使用shell脚本同步ntp服务器

引言:在测试openstack云平台的各个功能中,会反复出现很多次重新部署云平台的情况,每次部署云平台之后就要为每个计算节点和管理节点调配时间很是苦恼。介于环境中没有python的额外安装包而且不通外网,所以python很多时间模块是没办法使用了,于是写了一个简单的shell脚本来同步时间,以此来供大家初学参考参考。

脚本如下:

#! /bin/bash

#This part will receive target ipaddresses.
read -p "Please inpute external ip from controller node as below:(It shoud ends with \"/\", each IP should use \"/\" to distingusish ) " ExternalIPs

read -p "Please inpute management ip from compute node as below:(It should ends with \"/\",each IP should use \"/\" to distingusish) " ManagementIPs
read -p "Please inpute Rollor ip:" RollerIP

#This part will cut character string, and store in a array. Use this ip to connect target server. Then we can change NTP server ipaddress in ntp confige file and restart ntp server.

OLD_IFS="$IFS"
IFS="/"
external=($ExternalIPs)
management=($ManagementIPs)
IFS="$OLD_IFS"
#echo ${external[@]}
#echo ${management[@]}
for externalip in ${external[@]}
do
        ssh -Tq  root@$externalip << EOF
sed -i  's/server $RollerIP/server 192.158.58.1/'  /etc/ntp.conf
systemctl restart ntpd
hostname
sleep 2
ntpq -p
EOF

sleep 1
done


for managementip in ${management[@]}
do
        ssh -Tq root@$managementip  << EOF
sed -i  's/server $RollerIP/server ${external[0]}/'  /etc/ntp.conf
systemctl restart ntpd
hostname
sleep 1
ntpq -p
EOF

sleep 1
done

代码的思路很简单通过分为以下四个部分来讲下其中所使用的小细节吧。

part1:
在测试环境中我们是通过一台部署机器来统一的给我们想安装的物理机器部署openstack的,我们这里称之为roller,而每次部署完成之后openstack的整个云平台ntp服务器都是指向roller的机器,很显然由于不通外网而且roller每次部署完都是关机状态,我们显然要把部署出来的各个节点的所指向NTP服务器IP替换掉。这里我将云平台分为了管理节点和计算节点来分别接受IP。想的就是所有的管理节点统一的指向内网的服务器,和计算节点NTP则指向管理节点,这样可以防止内网NTP服务器挂掉之后导致整个云平台NTP再次错乱。这里我们使用read -p来接收输入的IP地址参数,并以“/”作为分割符,方便我们切割IP地址操作。

part2:

OLD_IFS="$IFS"
IFS="/"
external=($ExternalIPs)
management=($ManagementIPs)
IFS="$OLD_IFS"
for externalip in ${external[@]}

这里的操作就是将接收到的字符串接收然后定义分隔符号,并将字符串作为数组以“/”分隔拿出单个的IP地址。

part3:

ssh -Tq  root@$externalip

这里主要的是-Tq参数,如果不使用-Tq参数的话,脚本执行以后的命令很可能会返回“Pseudo-terminal will not be allocated because stdio”

part4:

sed -i  's/server $RollerIP/server ${external[0]}/'  /etc/ntp.conf

这里是通过sed命令将原先定义在ntp服务器中的server IP地址进行替换。

脚本虽然很简单主要是锻炼下编程的思路。希望能给大家有参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值