立即注册  找回密码
 立即注册
CeraNetworksBGVM服务器主机交流会员请立即修改密码Sharktech防护
查看: 5|回复: 0

openwrt脚本:判断是否获取到公网IP,否则重新拨号

[复制链接]

openwrt脚本:判断是否获取到公网IP,否则重新拨号

[复制链接]

19

主题

65

回帖

365

积分

中级会员

积分
365
lost1984

19

主题

65

回帖

365

积分

中级会员

积分
365
2023-6-22 11:52:37 | 显示全部楼层 |阅读模式
如题,本地联通有概率获取到公网ip,所以写个脚本,稳定运行半年了,分享出来。
[ol]
  • 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
  • [/ol]复制代码

    添加到开机脚本和计划脚本(每分钟执行一次):
    * * * * * nohup bash   /mnt/sdb1/bin/pppoe-ip.sh  &


    不会写服务,也不会写心跳检测,如果有大佬进行完善更好。



    注意:passwall等软件要ipw.cn域名添加到直连白名单。
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|小黑屋|HS2V主机综合交流论坛

    GMT+8, 2024-11-24 07:19 , Processed in 0.015305 second(s), 4 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表