Пишете скриптове за Mikrotik RouterOS
Писането на скриптове за Mikrotik RouterOS е лесно
Автор: admin на 11.11.2014 г., 00:57 ч., прегледано: 2349
Единственото, което остава да направите, е автоматично да генерирате този списък. Който още не му е писнало от моите писания, ви каня на хабракат.
Текстът на скрипта трябва да бъде добавен към хранилището на скриптове, намиращо се в раздела /системни скриптове. Скриптът се изпълнява ред по ред. Всеки ред има следния синтаксис: [префикс] - ":" - за глобални команди, командният ред започва със знака "/", който ще бъде изпълнен спрямо корена на конфигурацията, префиксът може да липсва, тогава командният ред се изпълнява спрямо текущия раздел за конфигурация; [път] - пътят до необходимия раздел за конфигурация, който се навигира преди изпълнение на командата; param=[стойност]] — наименувани параметри и техните ценности.
Така че, първо, нека дефинираме параметрите на скрипта под формата на променливи. Променливата се декларира съответно с командите :local и :global, получаваме локална променлива, която е достъпна само в рамките на своята зона на видимост, или глобална променлива, която се добавя към списъка с променливи на средата на OS и ще бъде достъпна отвсякъде. Локалните променливи живеят, докато техният обхват се изпълнява, глобалните променливи - докато не ги изтрием.
Нека отидем в раздела за конфигуриране на списъка с адреси на защитната стена /ip и изтрием всички записи, в които името на списъка съдържа стойността на променливата $ListName. Конструкцията на квадратни скоби ви позволява да изпълните друга команда в рамките на текущата команда и да предадете резултата от изпълнението на текущата като параметър.
отидете в секцията за конфигурация /ip dns cahe all. Съдържа DNSкеш на рутера под формата на таблица Име - Тип - Данни - TTL. Нека филтрираме по тип - имаме нужда само от A-записи. И ще преминем през резултата от избора в цикъла „за всеки“. Това ще бъде основният цикъл на нашия скрипт.
Нека създадем променливи, които се актуализират във всеки цикъл: два флага - bNew, изключващи дублирания, съвпадение, показващи дали текущият запис в кеша е включен в нашия списък с домейни; променливата cacheName съдържа полето Name на текущия запис в кеша, тоест домейна.
Нека да преминем през списъка с домейни и за всеки да проверим дали низът cacheName съдържа подниз под формата на домейн от този списък.
Ако го направи, задайте флага за съвпадение на true.