На новых версиях ПО 6.x mipsbe не могу отладить скрипт CHANGE-IP
скрипт-1
Код: Выделить всё
# Параметры подключения к NO-IP.com
:local ddnsuser "xxxlog"
:local ddnspass "xxxxpass"
:local ddnshostname "xxxxxxxxx.redirectme.net"
:local ddnsinterface "pptp-out2"
# Описание глобальных переменных
:global ddnslastip
:local str
:local ddnsip
:local ip
:if ([ :typeof $ddnslastip ] = nil ) do={ :global ddnslastip "0" }
:local ddnsip [ /ip address get [/ip address find interface=$ddnsinterface ] address ]
:if ([ :typeof $ddnsip ] = nil ) do={
:log info ("ServiceDNS: No ip address on $ddnsinterface .")
} else={
# Из полученного на интерфейсе IP адреса исключаем маску
:for i from=( [:len $ddnsip] - 1) to=0 do={
:if ( [:pick $ddnsip $i] = "/") do={
:set ddnsip [:pick $ddnsip 0 $i];
}
}
:if ($ddnsip != $ddnslastip) do={
:log info ("ServiceDNS: $ddnshostname -> $ddnsip")
# Отправляем новый IP адрес на сервис No-IP с помощью HTTP запроса
:local str "/nic/update?hostname=$ddnshostname&myip=$ddnsip"
/tool fetch url="http://dynupdate.no-ip.com/$str" mode=http user=$ddnsuser password=$ddnspass \ dst-path=("/ServiceDNS.".$ddnshostname)
:delay 1
# Сохраняем результаты в лог файлах
:local str [/file find name="ServiceDNS.$ddnshostname"];
:log info [/file get $str contents];
/file remove $str
:global ddnslastip $ddnsip
}
}
Пробывал альтернативный скрипт
Код: Выделить всё
#############Script Settings##################
:local NOIPUser "xxxlog"
:local NOIPPass "xxxpass"
:local WANInter "pptp-out2"
:local NOIPDomain "xxxxxx.redirectme.net"
###############################################
:local IpCurrent [/ip address get [find interface=$WANInter] address];
:for i from=( [:len $IpCurrent] - 1) to=0 do={
:if ( [:pick $IpCurrent $i] = "/") do={
:local NewIP [:pick $IpCurrent 0 $i];
:if ([:resolve $NOIPDomain] != $NewIP) do={
/tool fetch mode=http user=$NOIPUser password=$NOIPPass url="http://dynupdate.no-ip.com/nic/update\3Fhostname=$NOIPDomain&myip=$NewIP" keep-result=no
:log info "NO-IP Update: $NOIPDomain - $NewIP"
}
}
}
Оба скрипта не обновляют ip в dns сервиса no-ip.org .
В терминале команда
Код: Выделить всё
[admin@MikroTik] > system script environment print
# NAME VALUE
[admin@MikroTik] >
Делал вот по этой статье http://www.technotrade.com.ua/Articles/mikrotik_and_no-ip_setup_2012-05-28.php
Может у кого были подобные проблемы?
Более на раннем ПО работал успешно скрипт вот такой
Код: Выделить всё
# Имя сервиса DYNDNS или NOIP
:local SRVNAME "NOIP"
# Определяем данные учетной записи на сервисе
# Имя пользователя
:local USER "USER"
# Пароль пользователя
:local PASS "PASSS"
# Доменное имя
:local HOSTNAME "name.no-ip.org"
# Имя внешнего интерфеса (WAN)
:local INTERFACE "ether1"
# Последний IP адрес привязанный к доменному имени на сервисе
# (определяем глобальный параметр)
:global LASTIP
# Текущий IP адрес на внешнем интерфейсе
:local IP
# Определяем имя файла результата HTTP запроса обновления IP адреса
:local LOG
# Определяем HTTP запрос
:local REQ
# Начало процедуры синхронизации адреса
:log info ("#================| Начало процедуры обновления адреса |================#")
# Если IP адрес еще ни разу не определялся (т.е. это первый запуск скрипта), то задаем адрес равный 0
:if ( [ :typeof $LASTIP ] = nil ) do={ :set LASTIP 0 }
# Выводим последний адрес, привязанный к доменному имени
:log info ("Последний адрес, привязанный к доменному имени: $LASTIP")
# Определяем текущий IP адрес
:set IP [ /ip address get [ find interface=$INTERFACE ] address ]
# Если IP адрес не удается определить, то
:if ( [ :typeof $IP ] = nil ) do={
# Выводим соответствующее сообщение в лог
:log error ("Невозможно опеределить адрес для $INTERFACE!!!")
# В противном случае
} else={
# Исключаем маску подсети из текущего адреса
:set IP [ :pick $IP 0 ( [ :len $IP ] - 3 ) ]
# Если адрес изменился, то
:if ( $IP != $LASTIP ) do={
# Выводим соответствующее сообщение в лог
:log warning ("Для домена $HOSTNAME измениля адрес с $LASTIP на $IP!!!")
# Если сервис DynDNS.org, то запрос имеет вид
:if ( $SRVNAME = "DYNDNS") do={ :set REQ "http://members.dyndns.org /nic/update?hostname=$HOSTNAME&myip=$IP&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG"
# В противном случае запрос имеет вид
} else={
:set REQ "http://dynupdate.no-ip.com/nic/update?hostname=$HOSTNAME&myip=$IP"
}
# Обновляем информацию на сервисе с помощью HTTP запроса
/tool fetch url=$REQ mode=http user=$USER password=$PASS dst-path=("/DDNS-" . $HOSTNAME)
# Делаем задрежку на 1 секунду для загрузки файла результата обновления IP адреса
:delay 1
# Определяем файл результата запроса по имени
:set LOG [ /file find name="DDNS-$HOSTNAME" ]
# Выводим содержимое файла в лог
:log info "Результат выполнения запроса:"
:log warning [ /file get $LOG contents ]
# Удаляем файла результата запроса
/file remove $LOG
# Обновляем последний связанный адрес
:set LASTIP $IP
}
}
# Завершение процедуры синхронизации адреса
:log info ("#==============| Завершение процедуры обновления адреса |==============#")
Но он увы перестал работать.
Скрипт-1 как бы обновляет ip похоже во время перезагрузки роутера.
Может какие мысли будут у кого на этот счет.
Спасибо!