Centos7服务器拨号上网之动态IP拨号脚本(所有客户端断开的情况才可以重拨)

一.新建restart_pppoe.sh文件

一.新建restart_pppoe.sh文件

#!/usr/bin/env bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export PATH

CONF="/usr/local/shadowsocks-go/shadowsocks-go.conf"

LOG="my-monitor.log"

COUNTNUM=0

FLAG=false

#读取配置文件

Read_config(){

    [[ ! -e ${CONF} ]] && echo -e "${Error} Shadowsocks 配置文件不存在 !" && exit 1

    port=$(cat ${CONF}|grep 'PORT = '|awk -F 'PORT = ' '{print $NF}')

    password=$(cat ${CONF}|grep 'PASSWORD = '|awk -F 'PASSWORD = ' '{print $NF}')

    cipher=$(cat ${CONF}|grep 'CIPHER = '|awk -F 'CIPHER = ' '{print $NF}')

    verbose=$(cat ${CONF}|grep 'VERBOSE = '|awk -F 'VERBOSE = ' '{print $NF}')

}

# 处理重新拨号逻辑

reconnect_ppoe(){

    echo -e "`date +'%Y-%m-%d %H:%M:%S'`: COUNTNUM="${COUNTNUM} >> $LOG

    echo -e "`date +'%Y-%m-%d %H:%M:%S'`: `curl myip.ipip.net`" >> $LOG

    #读取配置文件

    Read_config

    #获取当前连接IP

    user_IP=$(ss state connected sport = :${port} -tn|sed '1d'|awk '{print $NF}'|awk -F ':' '{print $(NF-1)}'|sort -u)

    #所有客户端断开时,重新拨号

    msg=""

    if [[ -z ${user_IP} ]]; then

        msg="`date +'%Y-%m-%d %H:%M:%S'`: 当前暂时没有链接的客户端IP"

        #避免拨号太频繁有可能会造客户端链接不上服务端,加入休眠时间60s

        if [[ "${FLAG}" = true ]]; then

            FLAG=false

            #重新PPPOE拨号

            /sbin/pppoe-stop

            /sbin/pppoe-start

            echo -e "`date +'%Y-%m-%d %H:%M:%S'`: 重新拨号完成–`curl myip.ipip.net`" >> $LOG

            #更新ArDNSPod动态DDNS

            /usr/local/ArDNSPod-master/ddnspod.sh

            #更新CloudXNS

            /usr/local/cloudxns/cloudxns_ddns.sh

        fi

    else

        FLAG=true

        user_IP=$(echo -e "\n${user_IP}")

        msg="`date +'%Y-%m-%d %H:%M:%S'`: 当前链接IP: "${user_IP}"\n"

    fi

    #写日志到文件

    echo -e ${msg} >> $LOG

    #清理日志内容

    if [[ ${COUNTNUM} -ge 60 ]]; then

        echo "" > my-monitor.log

        COUNTNUM=0

    fi

    #清空user_IP变量

    user_IP=""

}

#调用函数,设置为后台服务运行

#1.后台服务运行

# nohup /root/.script/restart_pppoe.sh 2>&1 > /dev/null &

#2.确认每秒执行

# tail -f /root/.script/my-monitor.log

#3. 停止脚本运行进程

#  kill -s 9 `ps -aux | grep restart_pppoe.sh | awk '{print $2}'`

#查询出口IP

# curl ipinfo.io 或  curl myip.ipip.net

while [ true ]; do

    let COUNTNUM++

    /bin/sleep 1

    reconnect_ppoe

done

二.新建start_server.sh文件

#!/usr/bin/env bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export PATH

kill -s 9 `ps -aux | grep restart_pppoe.sh | awk '{print $2}'`

nohup /root/.script/restart_pppoe.sh 2>&1 > /dev/null &

三.为start_server.sh文件授权执行权限

chmod +x /root/.script/start_server.sh

四.安装ArDNSPode

官网: https://github.com/anrip/ArDNSPod

1.下载文件

2.上传解压

3.修改配置 dns.conf文件

mv  dns.conf.example dns.conf

vim dns.conf

#修改内容如下所示