Я ввожу в терминал: /tool fetch address=checkip.dyndns.com src-path=/ mode=http dst-path=("PublicIP"); результат - failure: maximum connection count reached. Скрипт No-IP из микротик вики не работает у меня, поэтому я перешел к ‘fetch’. У меня есть немного модифицированный скрипт:
# Автоматическое обновление динамического DNS No-IP
# no-ip_ddns_update
#--------------- Измените значения в этом разделе, чтобы они соответствовали вашей настройке ------------------
# Информация об учетной записи No-IP
:local noipuser "noipuser"
:local noippass "noippass"
# Укажите имя хоста или метку сети, которую необходимо обновить.
# Имена хостов со пробелами не поддерживаются. Замените значение в кавычках ниже вашими именами хостов.
# Чтобы указать несколько хостов, разделите их запятыми.
:local noiphost "noiphost"
# Измените имя интерфейса, который получает динамический IP-адрес
:local inetinterface "inetinterface"
#------------------------------------------------------------------------------------
# Больше не требуется никаких изменений
:log info "inetinterface ($inetinterface)"
:global previousIP
:if ([/interface get $inetinterface value-name=running]) do={
# Получить текущий IP-адрес на интерфейсе
:log info " ===== все начинает ощутимо нагреваться ====="
## :local currentIP [/ip address get [find interface="$inetinterface" disabled=no] address]
/tool fetch address=checkip.dyndns.com src-path=/ mode=http dst-path=("PublicIP");
:delay 5;
:log info "1 PublicIP: ($PublicIP)"
:log info "delay: ($delay)"
:local DDNSIP [/file get PublicIP contents];
:local DDNSIP [:pick $DDNSIP 0 [:find $DDNSIP "</body>"]];
:local DDNSIP [:pick $DDNSIP ([:find $DDNSIP ":"]+2) 100];
/file remove PublicIP;
:local currentIP [$DDNSIP]
:log info "currentIP: Текущий IP ($currentIP)"
:log info " asd 2 "
# Удалить маску сети из IP-адреса
:for i from=( [:len $currentIP] - 1) to=0 do={
:if ( [:pick $currentIP $i] = "/") do={
:set currentIP [:pick $currentIP 0 $i]
}
}
:if ($currentIP != $previousIP) do={
:log info "No-IP: Текущий IP $currentIP не равен предыдущему IP, требуется обновление"
:set previousIP $currentIP
# URL обновления. Обратите внимание, что "\3F" — это шестнадцатеричный код знака вопроса (?). Требуется, поскольку ? является специальным символом в командах.
:local url "http://dynupdate.no-ip.com/nic/update\3Fmyip=$currentIP"
:local noiphostarray
:set noiphostarray [:toarray $noiphost]
:foreach host in=$noiphostarray do={
:log info "No-IP: Отправка обновления для $host"
/tool fetch url=($url . "&hostname=$host") user=$noipuser password=$noippass mode=http dst-path=("no-ip_ddns_update-" . $host . ".txt")
:log info "No-IP: Хост $host обновлен на No-IP с IP $currentIP"
}
} else={
:log info "No-IP: Предыдущий IP $previousIP равен текущему IP, обновление не требуется"
}
} else={
:log info "No-IP: $inetinterface в данный момент не работает, поэтому обновление не будет выполнено."
} Моя цель – получить текст из checkIP в переменную. Я пробовал удалить скрипт и снова написать в терминал… результат все тот же.