限制bash直到循环到3次重试

时间:2017-11-07 23:47:44

标签: bash

我需要暂停init.d / ntpd脚本的启动,直到服务器可以与本地生产网络上的时间服务器通信为止。 构建替换服务器时,在单独的本地构建网络上使用pxe kickstart时,时间服务器不可用。 由于远程站点的数量(140+),在每个本地构建网络上安装时间服务器成本过高。 构建服务器需要在post_install过程中多次重新引导服务器,以确保正确安装多个自定义应用程序和自定义硬件驱动程序。 如果在构建网络上没有时间服务器,则init.d / ntpd脚本会在post_install过程中不断挂起服务器的第一次重新启动。 为了防止它在构建过程中挂起,我正在尝试开发一种绕过加载init.d / ntpd脚本的方法。 kickstart过程的一部分在kickstart过程中将文本文件放在/文件夹中。 我在引导过程中查找/build-status.txt文件,以确定服务器是否仍在构建网络上。 如果该文件存在,init.d / ntpd脚本将查找其中一个生产网络交换机(x.x.1.1或x.x.2.1或x.x.1.2),以验证它是否仍连接到构建网络。 如果它在少于3次尝试中成功ping其中一个网络交换机,则会删除/build-status.txt文件,然后查找其中一个时间服务器。 在尝试ping生产网络交换机失败3次后,服务器需要停止查找并退出if语句以继续执行init.d / ntpd脚本的其余部分。 这是我目前拥有的,但由于某种原因,sshd要么是,无法启用或被禁用,我无法进入服务器。 非常感谢任何帮助。

# Verify processor is not building
file="/build-status.txt"
sleepcount=0
if [ ! -f "$file" ] ; then
    # Processor not building, wait for timeserver(s) to be available
    /bin/echo "==============================" >> /var/log/ntpd.log
    /bin/echo "$(date) Looking for Timeserver" >> /var/log/ntpd.log
    until /bin/ping -c 1 timeserver1 > /dev/null || /bin/ping -c 1 timeserver2 > /dev/null || /bin/ping -c 1 timeserver3 > /dev/null ; do
        sleep 2
    done
    /bin/echo "$(date) Timeserver Found" >> /var/log/ntpd.log
    /bin/echo "==============================" >> /var/log/ntpd.log
else 
    # Processor building or just finished building, wait for switch(es) to be available
    /bin/echo "==============================" >> /var/log/ntpd.log
    /bin/echo "$(date) Looking for Switches" >> /var/log/ntpd.log 
    until /bin/ping -c 1 192.168.1.1 > /dev/null || /bin/ping -c 1 192.168.2.1 > /dev/null || /bin/ping -c 1 192.168.1.2 > /dev/null
    do
        sleep 2
        sleepcount=$((sleepcount+1))
        if [[ sleepcount -gt 3 ]] ; then
            break
        fi
    done
    if [[ sleepcount -le 3 ]] ; then
        # Processor not building, remove build-status.txt
        /bin/echo "$(date) Found Switches" >> /var/log/ntpd.log 
        /bin/rm -f $file
        /bin/echo "$(date) Removed $file" >> /var/log/ntpd.log 
        # wait for timeservers to be available
        /bin/echo "$(date) Looking for Timeserver" >> /var/log/ntpd.log
        until /bin/ping -c 1 timeserver1 > /dev/null || /bin/ping -c 1 timeserver2 > /dev/null || /bin/ping -c 1 timeserver3 > /dev/null ; do
            sleep 2
        done
        /bin/echo "$(date) Timeserver Found" >> /var/log/ntpd.log
        /bin/echo "==============================" >> /var/log/ntpd.log
    else
    # Processor building
        /bin/echo "$(date) Switches NOT Found" >> /var/log/ntpd.log
        /bin/echo "$(date) Build in Progress" >> /var/log/ntpd.log
        /bin/echo "==============================" >> /var/log/ntpd.log         
    fi
fi

0 个答案:

没有答案