Проверка IP LTE-интерфейса и отправка его на ddns
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Тогда - так, как я и написал. Опять же, ничего не мешает этот скрипт выполнять из PPP-профиля, а не дёргать по Scheduler'у
-
- Сообщения: 33
- Зарегистрирован: 28 сен 2018, 12:38
Re: Проверка IP LTE-интерфейса и отправка его на ddns
пока не работает, полный скрипт имеет такой вид, смущает строка local ddnsinterface "имя vpn-интерфейса" - что все-таки тут указывать логин или имя интерфейса, имя в ROS указывается в угловых скобках <vpn-клиент>. По идее с вашей модификацией переменная local ddnsinterface уже и не нужна. Плюс наверное можно убрать действие "Из полученного на интерфейс IP исключаем маску"
Код: Выделить всё
# Параметры подключения к NO-IP.comlocal ddnsinterface
:local ddnsuser "user name"
:local ddnspass "password"
:local ddnshostname "...ddns.net"
:local ddnsinterface "имя vpn-интерфейса"
# Описание глобальных переменных
:global ddnslastip
:local str
:local ddnsip
:local ip
:local caller id
:if ([ :typeof $ddnslastip ] = nil ) do={ :global ddnslastip "0" }
:local ddnsip [/ppp active get [find name="...ddns.net"] caller-id]
: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
}
}
Последний раз редактировалось Vita077 07 окт 2018, 18:25, всего редактировалось 1 раз.
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Она не должна смущать хотя бы потому, что эта переменная нигде не используется, потому что мы ведь выше выбрали другой способ получения адреса - из caller-id.
name="...ddns.net" - вы уверены, что имя пользователя, под которым клиент подключается к серверу, у вас оканчивается на ddns.net?..
":local caller id" - эта конструкция создаёт переменную caller и присваивает ей строку с текстом "id" - это именно то, что предполагалось делать?..
name="...ddns.net" - вы уверены, что имя пользователя, под которым клиент подключается к серверу, у вас оканчивается на ddns.net?..
":local caller id" - эта конструкция создаёт переменную caller и присваивает ей строку с текстом "id" - это именно то, что предполагалось делать?..
-
- Сообщения: 33
- Зарегистрирован: 28 сен 2018, 12:38
Re: Проверка IP LTE-интерфейса и отправка его на ddns
да, у меня логин клиента к vpn-серверу имеет вид такой же что и доменное имя ddns - сделано умышленно, чтобы не писать комментарии к логинам - так наглядно понятно для каких целей он создан
":local caller id" - если так, я уберу её, local ip тоже не нужна теперь
":local caller id" - если так, я уберу её, local ip тоже не нужна теперь
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Проверка IP LTE-интерфейса и отправка его на ddns
В лог что-нибудь пишется при выполнении скрипта?
-
- Сообщения: 33
- Зарегистрирован: 28 сен 2018, 12:38
Re: Проверка IP LTE-интерфейса и отправка его на ddns
да, он забирает callerd id корректно, но почему-то отправляет внешний IP сервера VPN, 10.202 который - http://file.sampo.ru/76jf63/ но к внешнему другой домен прикручен, из-за этого ddns его и не меняет
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Что именно неправильно и куда отправляется? Там разные ddns-имена на скриншоте почти везде замазаны, или там одно и то же?
-
- Сообщения: 33
- Зарегистрирован: 28 сен 2018, 12:38
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Зашел на - https://wiki.mikrotik.com/wiki/Dynamic_ ... for_dynDNS скопировал скрипт, заменил строку с IP адресом на предложенную Вами, получилось обновить IP на DDNS. Огромное Вам спасибо за помощь! В итоге скрипт будет иметь такой вид:
Код: Выделить всё
# Define User Variables
:global ddnsuser "DYNDNSUSER"
:global ddnspass "DYNDNSPASS"
:global ddnshost "DYNDNSHOST"
# Define Global Variables
:global ddnsip
:global ddnslastip
:if ([ :typeof $ddnslastip ] = nil ) do={ :global ddnslastip "0" }
:global ddnsinterface
:global ddnssystem ("mt-" . [/system package get system version] )
# Define Local Variables
:local int
# Loop thru interfaces and look for ones containing
# default gateways without routing-marks
:foreach int in=[/ip route find dst-address=0.0.0.0/0 active=yes ] do={
:if ([:typeof [/ip route get $int routing-mark ]] != str ) do={
:global ddnsinterface [/ip route get $int interface]
}
}
# Grab the current IP address on that interface.
:global ddnsip [/ppp active get [find name="VPNLOGIN"] caller-id]
# Did we get an IP address to compare?
:if ([ :typeof $ddnsip ] = nil ) do={
:log info ("DynDNS: No ip address present on " . $ddnsinterface . ", please check.")
} else={
:if ($ddnsip != $ddnslastip) do={
:log info "DynDNS: Sending UPDATE!"
:local str "/nic/update?hostname=$ddnshost&myip=$ddnsip&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG"
/tool fetch address=members.dyndns.org src-path=$str mode=http user=$ddnsuser \
password=$ddnspass dst-path=("/DynDNS.".$ddnshost)
:delay 1
:local str [/file find name="DynDNS.$ddnshost"];
/file remove $str
:global ddnslastip $ddnsip
}
}
-
- Сообщения: 33
- Зарегистрирован: 28 сен 2018, 12:38
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Рано обрадовался - сработало вручную 1 раз и пока все. Теперь ни логов, ни обновлений IP нет.
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Вам просто посочувствовать, или вы всё же покажете, что и куда добавляете, чтобы хоть кто-нибудь попытался помочь?
-
- Сообщения: 33
- Зарегистрирован: 28 сен 2018, 12:38
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Скрипт всё-таки предыдущий где переменные ":local". Он отрабатывает, в логах видно, но вместо значения "nochg" объявляется значение "good", при этом IP на сервисе DDNS не меняется - http://file.sampo.ru/2s4s2w/
Обрадовался я тому, что со скриптом с вики микротика со значением "good" сработало, но только 1 раз, больше сколько не пытался - ничего, даже в логах. Хост на сервисе могу выбрать только "А" (ipv.4)
Обрадовался я тому, что со скриптом с вики микротика со значением "good" сработало, но только 1 раз, больше сколько не пытался - ничего, даже в логах. Хост на сервисе могу выбрать только "А" (ipv.4)
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Проверка IP LTE-интерфейса и отправка его на ddns
"Хост на сервисе могу выбрать только "А" (ipv.4)" - а это что значит? Для чего это там выбирать надо?
-
- Сообщения: 33
- Зарегистрирован: 28 сен 2018, 12:38
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Я так написал, может из-за этого какие-то проблемы. там такие варианты - http://file.sampo.ru/2n9w6g/
ну а сам скрипт который отрабатывает, но со значением ''good'' это - http://file.sampo.ru/qgw4ws/
ощущение такое, что DDNS принимает значение, но не применяет его, как буд то решает что передано оно не в том формате - это только мои предположения.
Дополнение: утром этот скрипт поставил в Scheduler, скрипт сработал со значением "good'', на сервисе IP поменялся. Как-то через раз работает, оставлю как есть пока, понаблюдаю.
Единственное - чтобы применить этот скрипт в профиле РРР, правильно понимаю, необходимо значение caller id использовать в виде переменной - $"caller-id"? Или есть ещё какие-нибудь синтаксические различия?
ну а сам скрипт который отрабатывает, но со значением ''good'' это - http://file.sampo.ru/qgw4ws/
ощущение такое, что DDNS принимает значение, но не применяет его, как буд то решает что передано оно не в том формате - это только мои предположения.
Дополнение: утром этот скрипт поставил в Scheduler, скрипт сработал со значением "good'', на сервисе IP поменялся. Как-то через раз работает, оставлю как есть пока, понаблюдаю.
Единственное - чтобы применить этот скрипт в профиле РРР, правильно понимаю, необходимо значение caller id использовать в виде переменной - $"caller-id"? Или есть ещё какие-нибудь синтаксические различия?
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Ну, не то, чтобы прямо уж необходимо, но оно будет удобнее: эта переменная автоматически заполняется нужной информацией. Технически можно оставить всё как есть. Технически можно шурупы забивать молотком - держаться будет тоже неплохо.
-
- Сообщения: 33
- Зарегистрирован: 28 сен 2018, 12:38
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Всё-таки синтаксисы под Scheduler и PPP отличаются, одним $"caller-id" не обойтись. Добавление $"user" тоже не помогает. В логах тишина, только подключение vpn-клиента.
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Синтаксис везде один и тот же, а дальше вы льёте воду, которая не проясняет ситуацию. Давайте конкретику: что именно и куда добавляете? У пользователя именно этот профиль указан?
-
- Сообщения: 33
- Зарегистрирован: 28 сен 2018, 12:38
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Да, именно этот. В скрипте просто меняю caller-id на $"caller-id", пробовал еще за find name= ставить $"user". Ставлю в секцию On во вкладку script PPP-профиля.
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Если всё именно так, как вы пишете - то и не должно работать. Приводите конкретный код, а то мы тут непонятно что обсуждаем. И вставляйте его в сообщения, я не в файлы на сторонних сайтах, по которым невозможно искать нормально.
-
- Сообщения: 33
- Зарегистрирован: 28 сен 2018, 12:38
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Хорошо, постараюсь без словоблудия. Имеем скрипт, благодаря вам, который прекрасно отрабатывает в Scheduler, но не отрабатывает в профиле РРР при подключении vpn-клиента. Что в нем изменить, чтобы он заработал в профиле? Сам скрипт:
Код: Выделить всё
# Параметры подключения к NO-IP.com
:local ddnsuser "userlogin"
:local ddnspass "userpass"
:local ddnshostname "ddnshostname"
:local ddnsinterface "<vpninterfacename>"
# Описание глобальных переменных
:global ddnslastip
:local str
:local ddnsip
:local ip
:if ([ :typeof $ddnslastip ] = nil ) do={ :global ddnslastip "0" }
:local ddnsip [/ppp active get [find name="vpnclientlogin"] caller-id]
: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
}
}
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Код: Выделить всё
:local ddnsip $"caller-id"
-
- Сообщения: 33
- Зарегистрирован: 28 сен 2018, 12:38
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Увы, нет. Ладно, давайте оставим, чувствую Вам уже это поднадоело. Оставлю в Scheduler, работает и ладно. Благодарю, реально очень помогли! Всего доброго!
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Проверка IP LTE-интерфейса и отправка его на ddns
Ну, если захотите поколупаться — начните со скрипта-пустышки вроде
Заработает (исключить проблемы с профилем) — тогда в основной скрипт натыкать побольше :log-команд, чтобы видеть, в какой момент что-то пошло не так, и дальше уже по месту разбираться.
Код: Выделить всё
:log info $"caller-id"