Проверка IP LTE-интерфейса и отправка его на ddns

Автоматизация при помощи встроенного скриптового языка и RouterOS API
Vita077
Сообщения: 31
Зарегистрирован: 28 сен 2018, 12:38

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Vita077 » 07 окт 2018, 18:59

да, он забирает callerd id корректно, но почему-то отправляет внешний IP сервера VPN, 10.202 который - http://file.sampo.ru/76jf63/ но к внешнему другой домен прикручен, из-за этого ddns его и не меняет

Аватара пользователя
Chupaka
Сообщения: 1180
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Chupaka » 07 окт 2018, 19:16

Что именно неправильно и куда отправляется? Там разные ddns-имена на скриншоте почти везде замазаны, или там одно и то же?

Vita077
Сообщения: 31
Зарегистрирован: 28 сен 2018, 12:38

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Vita077 » 07 окт 2018, 19:26

Зашел на - 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
  }
}

Vita077
Сообщения: 31
Зарегистрирован: 28 сен 2018, 12:38

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Vita077 » 08 окт 2018, 14:41

Рано обрадовался - сработало вручную 1 раз и пока все. Теперь ни логов, ни обновлений IP нет.

Аватара пользователя
Chupaka
Сообщения: 1180
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Chupaka » 08 окт 2018, 14:49

Вам просто посочувствовать, или вы всё же покажете, что и куда добавляете, чтобы хоть кто-нибудь попытался помочь? :)

Vita077
Сообщения: 31
Зарегистрирован: 28 сен 2018, 12:38

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Vita077 » 08 окт 2018, 18:14

Скрипт всё-таки предыдущий где переменные ":local". Он отрабатывает, в логах видно, но вместо значения "nochg" объявляется значение "good", при этом IP на сервисе DDNS не меняется - http://file.sampo.ru/2s4s2w/
Обрадовался я тому, что со скриптом с вики микротика со значением "good" сработало, но только 1 раз, больше сколько не пытался - ничего, даже в логах. Хост на сервисе могу выбрать только "А" (ipv.4)

Аватара пользователя
Chupaka
Сообщения: 1180
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Chupaka » 08 окт 2018, 18:52

"Хост на сервисе могу выбрать только "А" (ipv.4)" - а это что значит? Для чего это там выбирать надо?

Vita077
Сообщения: 31
Зарегистрирован: 28 сен 2018, 12:38

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Vita077 » 08 окт 2018, 19:13

Я так написал, может из-за этого какие-то проблемы. там такие варианты - http://file.sampo.ru/2n9w6g/
ну а сам скрипт который отрабатывает, но со значением ''good'' это - http://file.sampo.ru/qgw4ws/
ощущение такое, что DDNS принимает значение, но не применяет его, как буд то решает что передано оно не в том формате - это только мои предположения.
Дополнение: утром этот скрипт поставил в Scheduler, скрипт сработал со значением "good'', на сервисе IP поменялся. Как-то через раз работает, оставлю как есть пока, понаблюдаю.
Единственное - чтобы применить этот скрипт в профиле РРР, правильно понимаю, необходимо значение caller id использовать в виде переменной - $"caller-id"? Или есть ещё какие-нибудь синтаксические различия?

Аватара пользователя
Chupaka
Сообщения: 1180
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Chupaka » 09 окт 2018, 10:56

Ну, не то, чтобы прямо уж необходимо, но оно будет удобнее: эта переменная автоматически заполняется нужной информацией. Технически можно оставить всё как есть. Технически можно шурупы забивать молотком - держаться будет тоже неплохо.

Vita077
Сообщения: 31
Зарегистрирован: 28 сен 2018, 12:38

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Vita077 » 09 окт 2018, 12:13

Всё-таки синтаксисы под Scheduler и PPP отличаются, одним $"caller-id" не обойтись. Добавление $"user" тоже не помогает. В логах тишина, только подключение vpn-клиента.

Ответить