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

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
Аватара пользователя
GDragon
Сообщения: 80
Зарегистрирован: 20 ноя 2014, 15:48

Доработанный мной скриптик обновления 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"}


Ответить