http://ros-pack.mrli888.cn:6080 [mikrotik 所有安装包]
变量使用规则:
:local znewIPa ($znewIP.$inface) 两变量相联要用小括号, 常量要用 “常量”
报警
:log warning ($znewIPa)
/ip route set [/ip route find comment=("eth2-10/11")] gateway=$znewIPa
https://bbs.aliyun.com/read/259013.html?spm=a2c4e.11155515.0.0.511124d1QEOALV (在阿里云安装虚拟机教程)
官方网址:http://wiki.mikrotik.com/wiki/Manual:Interface/VLAN
路由表下载:www.tcp5.com提供 作者博客:http://ros6.com/
SSID中文转化:http://www.cat-home.org/app/chssid.php
语法:
if (条件) do={ true 动作} else={ false 动作}
更新VPN IP地址
-----------脚本--------------
{
#新域名IP
:local vpnnewip [:resolve chenyue0.9966.org]
#原本IP
:local vpnoldip [ /interface ovpn-client get [/interface ovpn-client find name=ovpn-out1] running ]
:if ($vpnoldip != true) do={
/interface ovpn-client set [/interface ovpn-client find name=ovpn-out1] connect-to=$vpnnewip
:log error ($vpnoldip)}
}
ADSL动态映射脚本 [2016年10月19日 23:42:27]
------------------------------------------
:global assign
:global new
:global status
:global x
:set x 1
:for i from=1 to=$x do={
:set status [/interface get[/interface find name=("pppoe-out".$i)]running]
:if($status=true) do={
:set new [/ip address get [/ip address find dynamic=yes interface=("pppoe-out" . $i)] address]
:set new [:pick $new 0 ([:len $new] -3)]
:set assign [/ip address get [/ip address find dynamic=no interface=("pppoe-out".$i)] address]
:set assign [:pick $assign 0 ([:len $new] -3)]
:if ($assign != $new) do={ /ip address set [/ip address find comment=("adsl_" . $i)] address=$new network=$new broadcast=$new
/ip firewall nat set [/ip firewall nat comment="3389"] dst-address=$new
}
}
}
-----自动更新VPN服务IP地址,批理执行[内标识]------------------------------------------------------------------------
:local ii "0"
:local pcom8 ""
/interface
#开始循环
:foreach puse in [find disabled=no] do={
#查找没禁用的
:local pcom [get $puse comment]
#备注
:set pcom8 [:pick $pcom ([:find $pcom "["]+1) [:find $pcom "]"]]
#处理备注
:local pnam [get $puse name]
#找到对应名称
:set ii ($ii + 1)
# ii自加1
:if ($pcom8="rou3") do={
#开始比较判断, 把备注[rou3]找出来判断
:log warning ("标识有rou3【" . $pnam . "】找到了!")
#新域名IP
:local vpnnewip [:resolve XXX.XXX.org]
#VPN状态
:local status [ /interface pptp-client get [/interface pptp-client find name=$pnam] running ]
:if ($status != true) do={
/interface pptp-client set [/interface pptp-client find name=$pnam] connect-to=$vpnnewip
:log error ("【" . $pnam . "】IP服务更新成功")}
}
}
-----PPPOE 执行到期脚本-------崔工程师提供--------------------------------------------------------------
#脚本制定 微信:22402506
:local tz
:local prof
:local tj
:set tz 1
:set prof 2day
:set tj 2
#tz为提前发送到期通知的天数
#比如:今天是20101213, 如果设置的tz为2天,那么20101214 20101215 这2个备注将下发通知
#如果tj为1 那么20101213的不停机。20101212的停机,如果设置为0,那么20101213停机
#prof为提前发送到期通知的模板
#tj为到期后几天停用用户账号,0为到期即停机
:local nyr [/system clock get date]
#年月日 2010/dec/12
:local yy ([:find jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec [:pick $nyr 0 3]]+1)
#查到当前月份
:if ($yy<10) do={:set yy (0 . $yy)}
#月份处理
:set nyr ([:pick $nyr 7 11] . $yy . [:pick $nyr 4 6])
#获得年份
:local ii "0"
:local pcom8 ""
/ppp secret
#开始循环
:foreach puse in [find disabled=no] do={
#查找没禁用的帐号
:local pcom [get $puse comment]
#备注
:set pcom8 [:pick $pcom ([:find $pcom "["]+1) [:find $pcom "]"]]
#处理备注
:local pnam [get $puse name]
#帐号
:local tzprof [get $puse profile]
#配置文件
:set ii ($ii + 1)
# ii自加1
:if ($pcom8!="" && $pcom8!="admin") do={
#开始比较判断, 备注不为空 也不为 admin
:if ([:len $pcom8]<8) do={
#长度判断
:log error ("账号【".$pnam."】日期备注不足8位,现备注日期:【" . $pcom8 . "】");:beep frequency=2080;
} else={
#转成数字
:if ($pcom8>1) do={
#如果大于1
:if ($pcom8>=$nyr && ($pcom8 - $nyr)<=$tz && $tzprof!=$prof) do={
#如果大于等于当前日期 并且 过期天数($pcom8 - $nyr)小于等于通知时间,同时配置文件不等于$prof)
/ppp secret set [/ppp secret find name=$pnam] profile=$prof;:set ii ($ii - 1)
#设置pppoe账号的配置文件为$prof,然后ii减一
:log warning ("用户【" . $pnam . "】已到期,通知已下发!")
}}
:if ($nyr>=$pcom8 && ($nyr - $pcom8)>=$tj) do={
#如果已经过期了,则强制下线并下发通知
/ppp active remove [/ppp active find name=$pnam];
/ppp secret disable [/ppp secret find name=$pnam];:set ii ($ii - 1)
:log error ("用户【" . $pnam . "】已过期停用并强制下线!")
}}} else={:log error ("用户【" . $pnam . "】的备注【".$pcom."】格式有误,请重新备注!")}
}
:log warning ("有效用户数【" . $ii . "】")
---自动更新IP到3322动态域名脚本---------------------------------------------------------------------------------------------------
:do {
:local ether
#DDNS帐号
:local user root
#DDNS密码
:local pass XXXX
#DDNS域名
:local host XXXX.f3322.org
#以下不需要修改
:local status [/interface pppoe-client get [/interface pppoe-client find name="pppoe-out1"] running];
:if ($status=true) do={
:set ether "pppoe-out1"};
:if ($status=false) do={
:set ether "pppoe-out1"};
:local oldip [:resolve $host]
:delay 5s
:local newip [ /ip address get [/ip address find interface=$ether ] address ]
:set newip [:pick $newip 0 [:find $newip "/"]]
:if ($oldip = $newip) do={
:log error ($host."\B6\AF\CC\AC\49\50\B5\D8\D6\B7\B2\BB\B1\E4\CE\DE\D0\EB\B8\FC\D0\C2: ".$oldip)}
:if ($oldip != $newip) do={
/tool fetch url=("http://www.nanyuetong.com/?$newip") mode=http user=$user password=$pass dst-path=$host
:log error ("\BE\C9\B5\C4IP\B5\D8\D6\B7\A3\BA: ".$oldip)
:log error ("\D0\C2\B5\C4IP\B5\D8\D6\B7\A3\BA: ".$newip)
:delay 3s
:local Result [/file get $host contents]
:if ([:find $Result "good"] != "nil") do={
:log error ($host." \B8\FC\D0\C2\B3\C9\B9\A6")
} else={
:log error ($host." \B8\FC\D0\C2\CA\A7\B0\DC")}
/file remove $host}}ost}}
------自动更新指定网卡非PPPOE-OUT IP更新至3322服务脚本--------2016年10月22日 12:44:30---------------------------
:do {
:local ether
#DDNS帐号
:local user root
#DDNS密码
:local pass XXXXX
#DDNS域名
:local host XXX.8866.org
#以下不需要修改
:local status [/interface pppoe-client get [/interface pppoe-client find name="pppoe-out1"] running];
:if ($status=true) do={
:set ether "pppoe-out1"};
:if ($status=false) do={
:set ether "pppoe-out1"};
:local oldip [:resolve $host]
:delay 10s
:local newip [/ip address get [/ip address find interface=("ether2")] address ]
#指定更新ether2网卡的IP
:set newip [:pick $newip 0 [:find $newip "/"]]
:if ($oldip = $newip) do={
:log error ($host."\B6\AF\CC\AC\49\50\B5\D8\D6\B7\B2\BB\B1\E4\CE\DE\D0\EB\B8\FC\D0\C2: ".$oldip)}
:if ($oldip != $newip) do={
/tool fetch url=("http://members.3322.org/dyndns/update\?system=dyndns&hostname=\
$host&myip=$newip") mode=http user=$user password=$pass dst-path=$host
:log error ("\BE\C9\B5\C4IP\B5\D8\D6\B7\A3\BA: ".$oldip)
:log error ("\D0\C2\B5\C4IP\B5\D8\D6\B7\A3\BA: ".$newip)
:delay 3s
:local Result [/file get $host contents]
:if ([:find $Result "good"] != "nil") do={
:log error ($host." \B8\FC\D0\C2\B3\C9\B9\A6")
} else={
:log error ($host." \B8\FC\D0\C2\CA\A7\B0\DC")}
/file remove $host}}
-------指定 更新网卡网关到指定路由-----------------------------------------------------------------------------------
:local zconfIP
:local zcurIP
:local znewIP
:local znum1
:local znum2
:local znum3
:local znum4
:local ztmpstr1
:local ztmpstr2
:local ztmpstr3
:local ztmpstr4
:local zconfIP [/ip address get [/ip address find interface=("ether2")] network]
:set znum1 [:find $zconfIP "."]
:set ztmpstr1 [:pick $zconfIP 0 $znum1]
:set znum2 [:find $zconfIP "." $znum1]
:set ztmpstr2 [:pick $zconfIP ($znum1+1) $znum2]
:set znum3 [:find $zconfIP "." $znum2]
:set ztmpstr3 [:pick $zconfIP ($znum2+1) $znum3]
:set ztmpstr4 [:pick $zconfIP ($znum3+1) [:len $zconfIP]]
:set znewIP ($ztmpstr1 . "." . $ztmpstr2 . "." . $ztmpstr3 . "." . 1)
/ip route set [/ip route find comment=("eth2-10")] gateway=$znewIP
---------桥接图-----------------------------------------------------------------------
------近期恢复更新 国内路由表------------------------------------------------------------------------------------------
近期恢复更新。
提供2016-09-07更新路由表下载:
http://www.tcp5.com/20160907.zip
----打印变量-------------------------------------------------------------
[admin@iphone6s] > :environment print
截取字符
------通过TXT修改后缀.pbk 创建VPN电话薄 再通过rasdial命令拨号--------------2016年10月23日 06:04:47----
Rasdial 命令详解:
通过使用 rasdial 命令,可以创建连接到拨号网络连接的简单批处理文件。还可以从命令行使用 rasdial建立网络连接或者断开网络连接。与自动拨号不同,rasdial命令不会在拨入连接前自动检测网络连接,而且不依赖于“远程访问自动连接管理器”服务。接线员辅助拨号或者人工拨号。
以下是一个拨号上网的批处理文件,写好之后一直放在电脑中,最近搞大总结,拿出来记录在博客中.
----------------------代码开始-------------------------------
echo off #关闭回显
:disconnect #设置标签,此处进入断开连接的批处理块
echo disconnect from server.
rasdial /disconnect #先断开所有拨号连接
:beginingDial #设置标签,此处为开始拨号的批处理块
echo dial beginning!
rasdial %1 %2 %3 #开始拨号连接,参数1是拨号连接的本地名称,参数2是此拨号连接所用的用户名,参数3是密码
if errorlevel 1 goto beginingDial #如果拨号连接返回值(即rasdial执行返回值为1,则拨号连接未成功,这时重新去拨号连接.)
----------------------代码结束-------------------------------
------自动执行更新IP至指定网址-----------------------------------------------------------------------------
:local rosname
#路由编号
:local ethname
#网卡名称
:local ethip [/ip address get [/ip address find interface=("ether2")] address ]
:set ethip [:pick $ethip 0 [:find $ethip "/"]]
#网卡IP地址
:local beizu
#备注
:local host1 http://www.XXXX.com/
:local host2
#以下是设置传值
set rosname rou1
set ethname vpn
set beizu 0757fushan
:local host ($host1."vpnip-rosname-".$rosname."-ethname-".$ethname."-ethip-".$ethip."-beizu-".$beizu.".html")
/tool fetch url=("$host")
:delay 5s
#等待5秒
set host2 [:pick $host 26 [:find $host 0]]
#:log error ($host2)
#清除文件
file remove $host2
-
-------同时兼容,国内国外网,访问国内走国内线路,访问国外走香港VPN线路------更新:2016年11月1日 09:33:51------
1、上传国外路由表,例如:
脚本:
add address=134.42.224.0/24 disabled=no list=GOOGLE |
选择路由表标识
强制非GOOGLE 路由表用户 使用以下DNS
最后:设置路由表,把标识路由表指向你境外的VPN即可!
然后把其它上网方式所有DNS,都只保留:8.8.8.8,即可正常同时访问国内和国外网站
:local ii "0"
:local pcom8 ""
/interface
#开始循环
:foreach puse in [find disabled=no] do={
#查找没禁用的帐号
:local pcom [get $puse comment]
#备注
:set pcom8 [:pick $pcom ([:find $pcom "["]+1) [:find $pcom "]"]]
#处理备注
:local pnam [get $puse name]
#找到对应帐号
:set ii ($ii + 1)
# ii自加1
:if ($pcom8="rou1") do={
#开始比较判断, 把备注[rou1]找出来判断
:log warning ("标识有rou1【" . $pnam . "】找到了!")
#新域名IP
:local vpnnewip [/ppp active get [/ppp active find name=0757-1] caller-id]
#VPN状态
:local status [ /interface pptp-client get [/interface pptp-client find name=$pnam] running ]
:if ($status != true) do={
/interface pptp-client set [/interface pptp-client find name=$pnam] connect-to=$vpnnewip
:log error ("【" . $pnam . "】IP服务更新成功")}
}
}
/system clock
set time-zone-name=Asia/Taipei
/system ntp client
set enabled=yes mode=unicast primary-ntp=202.120.2.101 secondary-ntp=192.43.244.18
:local ii "0"
:local pcom8 ""
:local vpnros ""
:local host2 ""
#路由编号
:set vpnros rou1
/interface
#开始循环
:foreach puse in [find disabled=no] do={
#查找没禁用的帐号
:local pcom [get $puse comment]
#备注
:set pcom8 [:pick $pcom ([:find $pcom "["]+1) [:find $pcom "]"]]
#处理备注
:local pnam [get $puse name]
#找到对应帐号
:set ii ($ii + 1)
# ii自加1
:if ($pcom8=$vpnros) do={
#开始比较判断, 把备注[$vpnros]找出来判断
:log warning ("标识有$vpnros【" . $vpnros . "】找到了!")
#域名网址
:local host1 http://XXXXX.com/
#执行打开网址
:local hostvpn ($host1."getvpnip-r-".$vpnros.".html")
:local hostvpnurl ("getvpnip-r-".$vpnros.".html")
/tool fetch url=("$hostvpn")
#获取新IP址址
:local vpnnewip [/file get $hostvpnurl contents]
#:log warning ("IP为【" . $hostvpnurl . "】!")
#VPN状态
:local status [ /interface sstp-client get [/interface sstp-client find name=$pnam] running ]
:if ($status != true) do={
/interface sstp-client set [/interface sstp-client find name=$pnam] connect-to=$vpnnewip
:log error ("【" . $pnam . "】IP服务更新成功")}
:delay 5s
#:log warning ("更新成功")
#set host2 [:pick $hostvpn 26 [:find $hostvpn 0]]
#:log error ($host2)
#file remove $host2
}
}
#选定义本地变量为status,通过get方法获得 gateway 值 find 是查找对应值列表
:log warning $status
#打印变量值
今天解决了我2年解决不了问题
}