|
|
如题,本地联通有概率获取到公网ip,所以写个脚本,稳定运行半年了,分享出来。
- cat /mnt/sdb1/bin/pppoe-ip.sh
- #!/bin/bash
- # 计数器,用于记录重新拨号的次数
- count=0
- while true; do
- # 从 4.ipw.cn 获取公网 IP 地址
- ip=$(curl -s https://4.ipw.cn/ | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}')
- # 从网卡pppoe-wan获取当前 IP 地址
- current_ip=$(ip addr show pppoe-wan | awk '/inet /{print substr($2,1)}')
- # 判断当前 IP 是否为公网 IP
- if [[ "$ip" != "$current_ip" ]]; then
- # 当前 IP 不是公网 IP,执行重新拨号
- echo $ip $current_ip
- ifdown wan
- sleep 5
- ifup wan
- count=$((count+1))
- echo "重新拨号 ${count} 次"
- # 判断是否达到重新拨号次数上限
- if [[ "$count" -ge 10 ]]; then
- echo "已达到重新拨号次数上限,退出循环"
- break
- fi
- else
- # 当前 IP 是公网 IP,退出循环
- echo "当前 IP 为公网 IP,退出循环"
- echo $ip
- break
- fi
- # 休眠 10 秒钟
- sleep 10
- done
复制代码
添加到开机脚本和计划脚本(每分钟执行一次):
* * * * * nohup bash /mnt/sdb1/bin/pppoe-ip.sh &
不会写服务,也不会写心跳检测,如果有大佬进行完善更好。
注意:passwall等软件要ipw.cn域名添加到直连白名单。 |
|