找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 1468|回复: 11

[Router OS] ROS有没有脚本可以类似Ikuai异网段重新拨号的功能?

[复制链接]
家里是联通的宽带三天挨强制重拨一次。这边可能拨到内网10.开头的IP。想说如果获取到这个IP段的话就重新拨号。有没有大佬有类似的脚本或者指点指点。

网上抄到的是这段

  1. <div>:global adslinterface "pppoe-out1"
  2. :global matchip "202.101(这里我改成了!10)"
  3. :global adslip [ /ip address get [/ip address find interface=$adslinterface] address ]

  4. :log info "CheckIP: PPPOE Connected!"
  5. :if ([ :len [/interface find name=$adslinterface]] = 0 ) do={ :log info "CheckIP: No interface named $adslinterface, please check configuration." }
  6. :if ([ :typeof $adslip ] = "nothing" ) do={
  7. :log info ("CheckIP: No ip address present on " . $adslinterface . ", please check.")
  8. } else={
  9. :log info ("CheckIP: Current IP address is " . $adslip)
  10. :while ([ :pick $adslip 0 [ :len $matchip] ] != $matchip) do={
  11. :log info "CheckIP: IP match failed, redialing......"
  12. /interface disable $adslinterface
  13. /interface enable $adslinterface
  14. :delay 20
  15. :global adslip [ /ip address get [/ip address find interface=$adslinterface] address ]
  16. }
  17. }</div>
复制代码


不过一直被循环,log中反馈其实已经拨到我需要的IP段了,但最后循环到获取不上IP,只能拔掉光猫的电源等一会才能重拨。
我的恩山、我的无线 The best wifi forum is right here.
来自手机 | 显示全部楼层
48小时自动重启一次不就好了

点评

主要是我这拨号可能获取到的是内网,也有可能是公网。所以得挑一下。  详情 回复 发表于 2023-8-7 00:56
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
iamyangyi 发表于 2023-8-7 00:53
48小时自动重启一次不就好了

主要是我这拨号可能获取到的是内网,也有可能是公网。所以得挑一下。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

试试这个 我不保证能用
自动重新拨号以获取以 10 开头的 IP 地址。
  1. :global matchip "!10"
  2. :global adslinterface "pppoe-out1"
  3. :global adslip [ /ip address get [/ip address find interface=$adslinterface] address ]

  4. :log info "CheckIP: PPPOE Connected!"
  5. :if ([ :len [/interface find name=$adslinterface]] = 0 ) do={
  6.     :log info "CheckIP: No interface named $adslinterface, please check configuration."
  7. }
  8. :if ([ :typeof $adslip ] = "nothing" ) do={
  9.     :log info ("CheckIP: No IP address present on " . $adslinterface . ", please check.")
  10. } else {
  11.     :local ipFirstPart [:pick $adslip 0 [:find $adslip "."]]
  12.     :log info ("CheckIP: Current IP address is " . $adslip)
  13.     :while ($ipFirstPart != $matchip) do={
  14.         :log info "CheckIP: IP match failed, redialing..."
  15.         /interface disable $adslinterface
  16.         /interface enable $adslinterface
  17.         :delay 20
  18.         :global adslip [ /ip address get [/ip address find interface=$adslinterface] address ]
  19.         :set ipFirstPart [:pick $adslip 0 [:find $adslip "."]]
  20.     }
  21. }
复制代码

点评

也是循环了,一直重新拨号不停的。  详情 回复 发表于 2023-8-7 18:24
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
MReloaded 发表于 2023-8-7 09:24
试试这个 我不保证能用
自动重新拨号以获取以 10 开头的 IP 地址。

也是循环了,一直重新拨号不停的。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

ChatGPT写的,不知道能不能用

如果您希望RouterOS在每次通过PPPoE拨号时检查IP,如果该IP是10.x.x.x,则重新拨号,您可以使用以下脚本。

这个脚本假设您的PPPoE接口名称是`pppoe-out1`。如果它有不同的名称,请替换脚本中的相应部分。

1. **创建脚本**:

首先,导航到`System` > `Scripts` 并创建一个新脚本。命名为`check_and_redial_pppoe`或其他您喜欢的名字。

脚本内容如下:

```mikrotik
:local pppoeInterface "pppoe-out1"

:local currentIP [/interface pppoe-client get $pppoeInterface current-remote-address]

# 检查IP是否以10.开始
:if ([:pick $currentIP 0 3] = "10.") do={
    /interface pppoe-client disable $pppoeInterface
    :delay 5s
    /interface pppoe-client enable $pppoeInterface
}
```

2. **将脚本与PPPoE客户端接口连接**:

为了确保此脚本在PPPoE客户端接口连接后立即运行,您需要将其添加到接口的`On-Up`事件。这样,每次接口连接时,都会执行该脚本。

```mikrotik
/interface pppoe-client
set [find name=$pppoeInterface] on-up="/system script run check_and_redial_pppoe"
```

现在,每当`pppoe-out1`接口连接并获得IP时,它都会检查该IP。如果该IP以10.开头,它将自动重新拨号。

确保您在实际部署之前在一个受控的环境中测试了这个脚本,以确保它按预期工作,并确保您不会因频繁地重新拨号而被ISP限制。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报


AI写的,不知道能不能用

如果您希望RouterOS在每次通过PPPoE拨号时检查IP,如果该IP是10.x.x.x,则重新拨号,您可以使用以下脚本。

这个脚本假设您的PPPoE接口名称是`pppoe-out1`。如果它有不同的名称,请替换脚本中的相应部分。

1. **创建脚本**:

首先,导航到`System` > `Scripts` 并创建一个新脚本。命名为`check_and_redial_pppoe`或其他您喜欢的名字。

脚本内容如下:

```mikrotik
:local pppoeInterface "pppoe-out1"

:local currentIP [/interface pppoe-client get $pppoeInterface current-remote-address]

# 检查IP是否以10.开始
:if ([:pick $currentIP 0 3] = "10.") do={
    /interface pppoe-client disable $pppoeInterface
    :delay 5s
    /interface pppoe-client enable $pppoeInterface
}
```

2. **将脚本与PPPoE客户端接口连接**:

为了确保此脚本在PPPoE客户端接口连接后立即运行,您需要将其添加到接口的`On-Up`事件。这样,每次接口连接时,都会执行该脚本。

```mikrotik
/interface pppoe-client
set [find name=$pppoeInterface] on-up="/system script run check_and_redial_pppoe"
```

现在,每当`pppoe-out1`接口连接并获得IP时,它都会检查该IP。如果该IP以10.开头,它将自动重新拨号。

确保您在实际部署之前在一个受控的环境中测试了这个脚本,以确保它按预期工作,并确保您不会因频繁地重新拨号而被ISP限制。

点评

靠谱,再次感谢。  详情 回复 发表于 2023-8-9 19:43
真是太感谢了,我之前也打算去问AI,但是没有注册到。  详情 回复 发表于 2023-8-8 00:57
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
lzy0478 发表于 2023-8-7 23:29
AI写的,不知道能不能用

如果您希望RouterOS在每次通过PPPoE拨号时检查IP,如果该IP是10.x.x.x,则重新拨 ...

真是太感谢了,我之前也打算去问AI,但是没有注册到。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

原来你一点点初中数学知识都没有,连=和!= 都分不清啊? 你抄的脚本是为了抢到某个地址,而你的需求是避开某个地址,所以要把第12行的 != 改成 =  

点评

光顾着头了,后边都没看。谢谢指教。  详情 回复 发表于 2023-8-8 18:19
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
mantouboji 发表于 2023-8-8 09:29
原来你一点点初中数学知识都没有,连=和!= 都分不清啊? 你抄的脚本是为了抢到某个地址,而你的需求是避开 ...

光顾着头了,后边都没看。谢谢指教。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
lzy0478 发表于 2023-8-7 23:29
AI写的,不知道能不能用

如果您希望RouterOS在每次通过PPPoE拨号时检查IP,如果该IP是10.x.x.x,则重新拨 ...

靠谱,再次感谢。

点评

你好 我也有同样的需求,不过应该不是只对当前单个的 pppoe 重拨把?需要对这个接口所有的pppoe都并发重拨吧?我是电信的,爱快应该是这样的  详情 回复 发表于 2023-9-28 09:48
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报


你好  我也有同样的需求,不过应该不是只对当前单个的  pppoe 重拨把?需要对这个接口所有的pppoe都并发重拨吧?我是电信的,爱快应该是这样的
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-30 01:29

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

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