通过端口检测远程服务器是否开启,如果没有开启开启本地替代服务脚本

#!/usr/bin/env bash

# -------------------------------
#注意 使用 时候 请先安装 nc
#yum install nc
#1. 请修改要执行的 命令所在目录 和命令名称 
#2. 请修改要执行的 命令所在目录 和命令名称 
# -------------------------------

#重试次数以后开服
RETRY_TIME=2
#标记文件 ,用于记录次数
FLAG_FILE=/tmp/check_need_start_loginserver
#要检查的远程Ip
CHECK_REMOTE_IP=192.168.0.33
#本地ip
LOCAL_IP=127.0.0.1

#请编辑要打开的目标文件所在目录*****
DEST_DIR=/usr/bin/
#要打开的文件命令(命令必须用单引号括起来)
DEST_BIN='ps x'

function check_live(){
    cmd_line="$1 $2"
    echo 'the cmd_line is',$cmd_line
    nc -w 10 -v $cmd_line  < /dev/null &>/dev/null;
    if [ $? -eq 0 ]
      then
        return 0
      else
        echo $cmd_line:fail
        return 1
    fi
}

function start_server(){
    echo "begin start server"
    ###---
    # 这个就是要开启的程序
    cd $DEST_DIR
    pwd
    $DEST_BIN
}



function check_need_start_server(){
    echo "add new line to file " >> $FLAG_FILE
    count_line=`wc -l $FLAG_FILE | awk '{print $1}'`
    if [ $count_line -gt $RETRY_TIME ];then
        rm -f $FLAG_FILE
        echo "beyound the limit try times,so begin start server"
        start_server
    fi
}


function main(){
    #记录一下时间
    echo `date`

    local_login_port=33101

    #check local server
    if check_live "$LOCAL_IP" $local_login_port 
    then
        echo "local is ok"
        exit 0
    else
        echo "local is wrong"
    fi

    #check remove server
    if check_live  $CHECK_REMOTE_IP  $local_login_port 
    then
        echo "remote is ok"
        rm -f $FLAG_FILE
        exit 0
    else
        echo "remote is unreachable ,so we check wheather need open local server"
    fi

    check_need_start_server
}

main