找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 28889|回复: 4

[脚本] PPTP与PPPoE联动配置脚本问题

[复制链接]
发表于 2021-6-27 17:14:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
原为地址 http://www.irouteros.com/?p=463

客户通过windows电脑使用PPTP连接进入routeros,这时该PPTP账号对应一个运营商PPPoE拨号,并自动启动连接,这个PPPoE拨号获取一个公网IP上网,该账号的PPTP默认走这个PPPoE拨号上网,当PPTP账号断开后,对应的PPPoE拨号也同样断开。


On up脚本:
:local pptpname
:local pppoename
:log info “user login and script start”
:foreach i in=[/interface pptp-server find ] do={
     :if ( [/interface pptp-server get $i running] = true ) do={
        :set pptpname [/interface pptp-server get $i name]
        :log info “check $pptpname”      
        :set pppoename [:pick $pptpname [find $pptpname “-“] [:len $pptpname]]
        :set pppoename (“pppoe” . $pppoename)
        :if ( [/interface pppoe-client get [find name=$pppoename] disable ] = true  ) do={
          /interface pppoe-client enable [ find name =$pppoename ]
        :log info “$pptpname online $pppoename dail-up”
        }
     }
}

On down脚本:
:local pptpname
:local pppoename
:log info “user logout and script start”
:foreach i in=[/interface pptp-server find ] do={
     :if ( [/interface pptp-server get $i running] = false ) do={
        :set pptpname [/interface pptp-server get $i name]
        :log info “check $pptpname”      
        :set pppoename [:pick $pptpname [find $pptpname “-“] [:len $pptpname]]
        :set pppoename (“pppoe” . $pppoename)
        :if ( [/interface pppoe-client get [find name=$pppoename] disable ] = false ) do={
          /interface pppoe-client disable [ find name =$pppoename ]
        :log info “$pptpname offline $pppoename dail-down”
        }
     }
}


这个脚本在ros 6.48上运行有问题,请会的帮忙改下,谢谢!!

routeros
发表于 2021-6-28 22:45:59 | 显示全部楼层
系統給您已經給您許多方便的工具,您不需用script做這麼多事。
如:帳號ppp1對應profile1
2021-06-28 22-30-26 的螢幕擷圖.png 2021-06-28 22-30-59 的螢幕擷圖.png
2021-06-28 22-32-46 的螢幕擷圖.png
ppp1一旦上線,pptp-client的ip就會先存到address-list=vpn,並對pppoe-out2進行撥號。
透過src-address-list=vpn,透過路由策略,pptp-client能將封包往pppoe-out2送。

pptp-client一旦離線,pptp-client的ip就會從address-list=vpn移除,順便關閉pppoe-out2。
這是不是比您想像中簡潔的多

routeros
回复

使用道具 举报

 楼主| 发表于 2021-6-29 07:58:03 | 显示全部楼层
楼上的这个方法是可以,但是在有多个账号的情况下每条都要配个profile来对应pppoe
routeros
回复

使用道具 举报

发表于 2021-6-29 11:41:42 | 显示全部楼层
本帖最后由 cspm333 于 2021-6-30 00:49 编辑
ai188 发表于 2021-6-29 07:58
楼上的这个方法是可以,但是在有多个账号的情况下每条都要配个profile来对应pppoe ...

多設個profile比較單純;共用profile的的話on-up不會有問題,但on-down問題會很大。

因為pptp-client離線時,interface會從名單消失。
on-down無從從名單找出那個client離線,並對對應的pppoe-out名稱進行斷網。

若要找離線的client名稱,比較可靠的方式是從log裡找。
但整體的script會變得很肥大,編寫出錯的機會也變多。與其如此還不如多建幾筆profile來的更可靠。


routeros
回复

使用道具 举报

发表于 2021-7-1 00:42:17 | 显示全部楼层
本帖最后由 47771885 于 2021-7-1 01:07 编辑

你这个脚本能运行 真有点不可思议 令我差异 怎么会扯上 /interface pptp-server get $i name
这个就不纠结他了(默认系统有user参数)
        :set pppoename [:pick $pptpname [find $pptpname “-“] [:len $pptpname]]
        :set pppoename (“pppoe” . $pppoename)
        :if ( [/interface pppoe-client get [find name=$pppoename] disable ] = false ) do={
          /interface pppoe-client disable [ find name =$pppoename ]

从上面的来看估计是 客户端拨号账号和pppoe出口尾数名称 是一样的用这个来做依据....


每个人环境需求不一样,该应用一般用于商业用途我就不发实例了 大概说下比较科学的关键点吧..一般是用IP 尾数作为依据 进行操作


实在不行那个就参考 楼上的使用多模板吧妥妥的


routeros
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-12-22 11:00 , Processed in 0.057098 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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