Страница 1 из 2

Скрипт : как проверить на "левую" сеть

Добавлено: 20 окт 2014, 18:22
vomus
Добрый вечер!
Обнаружил, что провайдер стал иногда кроме нормальных адресов выдавать "левые", пока только из сеток 10.x.x.x. Соответственно, в DDNS'е появляются кривые записи и периодически не работает мой удаленный доступ.

Может кто-нибудь сталкивался с подобной проблемой - проверить, что адрес из левой сети и, если да, переподключить интерфейс.

Заранее спасибо,

Re: Скрипт : как проверить на "левую" сеть

Добавлено: 20 окт 2014, 18:33
vqd
Написать скрипт который проверяет полученный адрес на вхождение в правильную сеть, если адрес не верный то передёрнуть

Re: Скрипт : как проверить на "левую" сеть

Добавлено: 20 окт 2014, 19:06
vomus
vqd писал(а):Написать скрипт который проверяет полученный адрес на вхождение в правильную сеть, если адрес не верный то передёрнуть


Я это понимаю. Только не понимаю, как проверить на левую сеть.

Re: Скрипт : как проверить на "левую" сеть

Добавлено: 20 окт 2014, 19:31
vqd
Ну вы же знаете правильную сеть?
А дальше все просто

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

:put (192.168.0.1 in 192.168.0.0/24) 
true
:put (192.168.1.1 in 192.168.0.0/24)
false


Re: Скрипт : как проверить на "левую" сеть

Добавлено: 20 окт 2014, 19:38
vomus
vqd писал(а):Ну вы же знаете правильную сеть?
А дальше все просто

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

:put (192.168.0.1 in 192.168.0.0/24) 
true
:put (192.168.1.1 in 192.168.0.0/24)
false


Правильную - нет, а не правильную - знаю. :-) Я понял про (... in ...)

Re: Скрипт : как проверить на "левую" сеть

Добавлено: 20 окт 2014, 20:21
vomus
vqd писал(а):Ну вы же знаете правильную сеть?
А дальше все просто

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

:put (192.168.0.1 in 192.168.0.0/24) 
true
:put (192.168.1.1 in 192.168.0.0/24)
false



Кстати, а почему вот так?

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

[vomus@MikroTik] > :put $oo                                                          
10.5.37.12
[vomus@MikroTik] > :put ($oo in 10.0.0.0/8)
false
[vomus@MikroTik] > :put (10.5.37.12 in 10.0.0.0/8)   
true
[vomus@MikroTik] > :global oo "10.5.37.12"                                                 
[vomus@MikroTik] > :if ($oo in 10.0.0.0/8) do={:put "is true"} else={:put "is false"}
is false

Re: Скрипт : как проверить на "левую" сеть

Добавлено: 20 окт 2014, 21:48
podarok66
Да, точно, ща накидал в Терминале, выдало нечто такое:

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

 {
:local r [/ip address get [/ip address find interface=ether2] address];
:put $r;                                                               
:put (10.201.10.1/24 in 10.201.10.0/24);
:put ($r in 10.201.10.0/24)             
}                         
10.201.10.1/24
true
false

Как бы объяснить?

Re: Скрипт : как проверить на "левую" сеть

Добавлено: 21 окт 2014, 07:01
vqd
Ну отвечу на оба вопроса примером.

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

:global oo "10.5.37.12"  
:put ([:toip ($oo)] in 10.0.0.0/8) 
true
:put ($oo in 10.0.0.0/8)         
false



К стати зачем так сурово то?

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

:local r [/ip address get [/ip address find interface=ether2] address];


Достаточно

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

:put [/ip address get [find interface=ether2_Modem2] address ]
10.10.1.2/24


Re: Скрипт : как проверить на "левую" сеть

Добавлено: 21 окт 2014, 07:29
podarok66
vqd писал(а):К стати зачем так сурово то?

Да, признаться, неизбывная привычка делать всё так, чтобы было понятно любому постороннему.
Кстати, я возился с toip. У меня эта функция как-то не так срабатывает.

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

{
:local b [/ip address get [find interface=ether2] address ];
:put $b;
:put ($b in 192.168.100.0/24);
:put ([:toip ($b)] in 192.168.100.0/24);
:put (192.168.100.193/24 in 192.168.100.0/24)
}
192.168.100.193/27
false

true

Видишь, третья строка в выводе данных вообще пустая получается. Где-то я косячу с синтаксисом...

Re: Скрипт : как проверить на "левую" сеть

Добавлено: 21 окт 2014, 16:43
vomus
Вот главное :toip :hi_hi_hi: