經過端口檢測遠程服務器是否開啓,若是沒有開啓開啓本地替代服務腳本

#!/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
相關文章
相關標籤/搜索