Страница 1 из 1

Cкрипт обновления IP в настройках Hurricane Electric

Добавлено: 17 мар 2015, 22:46
GDragon
Доработанный мной скриптик обновления IP в настройках ipv6to4 туннеля от Hurricane Electric
(оригинал тут - http://wiki.mikrotik.com/wiki/Hurricane ... nt_updater)
Самое главное отличие - не долбится на сервер HE если IP не менялся.
Задействует те же переменные что и viewtopic.php?f=14&t=6196

Если что, "tunnel id" - берётся на странице с настройками туннеля, "HE user id" - когда залогинен, написан на странице https://tunnelbroker.net/, "He update key" - в "Advanced" настройках туннеля.
 Тело скрипта.
# Update Hurricane Electric IPv6 Tunnel Client IPv4 address
#---------- Config below this line ----------

:local HEtunnelinterface "HE interface name"
:local HEtunnelid "tunnel id"
:local HEuserid "HE user ID"
:local HEpasskey "HE update key"
:local HEupdatehost "ipv4.tunnelbroker.net"
:local HEupdatepath "/ipv4_end.php"
:local WAN "WAN interface name"
:local outputfile ("HE-" . $HEtunnelid . ".txt")

#---------- Config above this line ----------

:global StoredIP
:local CurrIP
:log info "Get WAN interface IP address (HE update script)"

# Get WAN interface IP address
:set CurrIP [/ip address get [/ip address find interface=$WAN] address]
:set CurrIP [:pick [:tostr $CurrIP] 0 [:find [:tostr $CurrIP] "/"]]

:if ([:len $CurrIP] = 0) do={
:log error ("Could not get IP for interface " . $WAN)
:error ("Could not get IP for interface " . $WAN)
} else={:log info "IP from $WAN get. (HE update script)"}
:log info "Checking & change tunnel settings if needed."

# Update the HEtunnelinterface with WAN IP
:if ($StoredIP != $CurrIP) do={
/interface 6to4 {
:if ([get ($HEtunnelinterface) local-address] != $CurrIP) do={
# :log info ("Updating " . $HEtunnelinterface . " local-address with new IP " . $CurrIP . "...")
set ($HEtunnelinterface) local-address=$CurrIP
}
}
:log info ("Updating IPv6 Tunnel " . $HEtunnelid . " Client IPv4 address to new IP " . $CurrIP . "...")
/tool fetch mode=http \
host=($HEupdatehost) \
url=("http://" . $HEupdatehost . $HEupdatepath . \
"?ip=" . $CurrIP . \
"&pass=" . $HEpasskey . \
"&user_id=" . $HEuserid . \
"&tunnel_id=" . $HEtunnelid) \
dst-path=($outputfile)

:log info ([/file get ($outputfile) contents])
/file remove ($outputfile)
} else={:log info "Tunnel update not needed"}