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

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

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

Сообщение Chupaka »

Синтаксис везде один и тот же, а дальше вы льёте воду, которая не проясняет ситуацию. Давайте конкретику: что именно и куда добавляете? У пользователя именно этот профиль указан?
Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

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

Сообщение Vita077 »

Да, именно этот. В скрипте просто меняю caller-id на $"caller-id", пробовал еще за find name= ставить $"user". Ставлю в секцию On во вкладку script PPP-профиля.
Аватара пользователя
Chupaka
Сообщения: 3878
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

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

Сообщение Chupaka »

Если всё именно так, как вы пишете - то и не должно работать. Приводите конкретный код, а то мы тут непонятно что обсуждаем. И вставляйте его в сообщения, я не в файлы на сторонних сайтах, по которым невозможно искать нормально.
Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

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

Сообщение Vita077 »

Хорошо, постараюсь без словоблудия. Имеем скрипт, благодаря вам, который прекрасно отрабатывает в 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

  } 

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

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

Сообщение Chupaka »

Код: Выделить всё

:local ddnsip $"caller-id"
Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

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

Сообщение Vita077 »

Увы, нет. Ладно, давайте оставим, чувствую Вам уже это поднадоело. Оставлю в Scheduler, работает и ладно. Благодарю, реально очень помогли! Всего доброго!
Аватара пользователя
Chupaka
Сообщения: 3878
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

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

Сообщение Chupaka »

Ну, если захотите поколупаться — начните со скрипта-пустышки вроде

Код: Выделить всё

:log info $"caller-id"
Заработает (исключить проблемы с профилем) — тогда в основной скрипт натыкать побольше :log-команд, чтобы видеть, в какой момент что-то пошло не так, и дальше уже по месту разбираться.
Ответить