Всем добра!
Есть список адресов, к примеру, от 1-100
Стоит задача рандомно выбирать раз в сутки адрес из этого списка и вносить его в определенное поле. Как реализовать рандом, раз в сутки и внесение выбранного IP адреса с помощью скрипта я понимаю. Вопрос как выбрать по номеру (или как то иначе) случайный адрес из списка?
Рандомно выбрать адрес из списка адресов
-
- Сообщения: 41
- Зарегистрирован: 31 мар 2018, 10:05
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Рандомно выбрать адрес из списка адресов
Приветствую.
Коротенький поиск приводит вот сюда, например:
https://forum.mikrotik.com/viewtopic.php?f=9&t=56933
https://forum.mikrotik.com/viewtopic.php?f=9&t=100868
Увы, встроенных функций не наблюдается.
Коротенький поиск приводит вот сюда, например:
https://forum.mikrotik.com/viewtopic.php?f=9&t=56933
https://forum.mikrotik.com/viewtopic.php?f=9&t=100868
Увы, встроенных функций не наблюдается.
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Рандомно выбрать адрес из списка адресов
Может, опишите ситуацию чуть подробнее, чтобы понятнее было, какие альтернативы предложить?
-
- Сообщения: 41
- Зарегистрирован: 31 мар 2018, 10:05
Re: Рандомно выбрать адрес из списка адресов
Смотрите, задача вроде оч.простая.
Но, я не могу понять, как взять определенный элемент из списка адресов.
Например у меня есть список адресов WhiteList из 25 элементов..
Так я получу рандомный номер- nn. Суть вопроса. Как взять(присвоить) переменной этот nn номер элемента из списка WhiteList?
Посоветовали через массивы, но...
Если не сложно поясните что не корректно в конструкции?
выдает что то абсурдное *11e4a
в то время как первый элемент содержит:
Но, я не могу понять, как взять определенный элемент из списка адресов.
Например у меня есть список адресов WhiteList из 25 элементов..
Код: Выделить всё
{
:global RandomOrg "";
/tool fetch url="https://www.random.org/integers/\?num=1&min=1&max=25&col=1&base=10&format=plain&rnd=new" keep-result=yes dst-path="pass.txt";
delay 3;
:global RandomOrg [/file get pass.txt contents];
/file remove pass.txt;
:put $RandomOrg;
:log info $RandomOrg
}
Посоветовали через массивы, но...
Если не сложно поясните что не корректно в конструкции?
Код: Выделить всё
global myarr [:toarray [/ip firewall address-list find list=VPN]]
put [pick $myarr 1]
в то время как первый элемент содержит:
Код: Выделить всё
address=198.50.183.71 comment=Canada_Montreal
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Рандомно выбрать адрес из списка адресов
Вы с чего взяли, что первый элемент содержит такое? Массив, возвращаемый командой find, содержит внутренние идентификаторы элементов (в формате "*<hex_id>"), что вы и видите.
Я тут слегка накропал, пока не увидел отредактированное ваше сообщение (обратите внимание, что у меня результат fetch не сохраняется в файл, поэтому не сношает диск роутера):
Чтобы по ID получить данные, сделайте
Я тут слегка накропал, пока не увидел отредактированное ваше сообщение (обратите внимание, что у меня результат fetch не сохраняется в файл, поэтому не сношает диск роутера):
Код: Выделить всё
{
:local r [/tool fetch url="https://www.random.org/integers/\?num=1&min=0&max=2&col=1&base=10&format=plain&rnd=new" as-value output=user];
:local myarr {"a"; "bc"; "def"};
:local r [:pick ($r->"data") 0 ([:len ($r->"data")]-1)];
:put [:pick $myarr $r];
}
Код: Выделить всё
:put [/ip fi ad get "*11e4a" address]
-
- Сообщения: 41
- Зарегистрирован: 31 мар 2018, 10:05
Re: Рандомно выбрать адрес из списка адресов
СПАСИБО!
Все получилось...
Не подскажете?
Это баг или фича ROS 6.46.3
Простейший скрипт:
Из консоли запускается, и делает то, что в нем. Если нажать на кнопку RUN Script ничего не происходит...
https://youtu.be/qVqtcGpntrM
Все получилось...
Не подскажете?
Это баг или фича ROS 6.46.3
Простейший скрипт:
Код: Выделить всё
{
/ip firewall nat disable 7;
:delay 2s;
/ip firewall nat enable 7;
}
https://youtu.be/qVqtcGpntrM
-
- Сообщения: 4086
- Зарегистрирован: 29 фев 2016, 15:26
- Откуда: Минск
Re: Рандомно выбрать адрес из списка адресов
Подскажу. "7" — это относительное понятие, которое зависит от предыдущего вызова print и может меняться в зависимости от его параметров. В скриптах его не надо использовать. Делайте что-то вроде
Можно попробовать использовать те самые ID в виде "*тыц", но тоже шаткий путь...
Код: Выделить всё
/ip fi nat disable [find comment="test me"]
-
- Сообщения: 41
- Зарегистрирован: 31 мар 2018, 10:05
Re: Рандомно выбрать адрес из списка адресов
Спасибо огромное!