Страница 1 из 1
					
				Рандомно выбрать адрес из списка адресов
				Добавлено: 11 фев 2020, 17:36
				 kreotodr
				Всем добра!
Есть список адресов, к примеру, от 1-100
Стоит задача рандомно выбирать раз в сутки адрес из этого списка и вносить его в определенное поле. Как реализовать рандом, раз в сутки и внесение выбранного IP адреса с помощью скрипта я понимаю. Вопрос как выбрать по номеру (или как то иначе) случайный адрес из списка?
			 
			
					
				Re: Рандомно выбрать адрес из списка адресов
				Добавлено: 11 фев 2020, 19:43
				 Chupaka
				
			 
			
					
				Re: Рандомно выбрать адрес из списка адресов
				Добавлено: 11 фев 2020, 19:44
				 Chupaka
				Может, опишите ситуацию чуть подробнее, чтобы понятнее было, какие альтернативы предложить?
			 
			
					
				Re: Рандомно выбрать адрес из списка адресов
				Добавлено: 11 фев 2020, 21:17
				 kreotodr
				Смотрите, задача вроде  оч.простая. 
 
Но, я не могу понять, как взять определенный элемент из списка адресов.
Например у меня есть список адресов 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
}
Так я получу рандомный номер- nn. Суть вопроса. Как взять(присвоить) переменной этот nn номер элемента из списка WhiteList?
Посоветовали через массивы, но...
Если не сложно поясните что не корректно в конструкции?
Код: Выделить всё
global myarr [:toarray [/ip firewall address-list find list=VPN]]
put [pick $myarr 1]
выдает что то абсурдное 
*11e4a
в то время как первый элемент содержит:
Код: Выделить всё
address=198.50.183.71   comment=Canada_Montreal
 
			 
			
					
				Re: Рандомно выбрать адрес из списка адресов
				Добавлено: 12 фев 2020, 16:09
				 Chupaka
				Вы с чего взяли, что первый элемент содержит такое? Массив, возвращаемый командой find, содержит внутренние идентификаторы элементов (в формате "*<hex_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];
}
Чтобы по ID получить данные, сделайте 
 
			 
			
					
				Re: Рандомно выбрать адрес из списка адресов
				Добавлено: 13 фев 2020, 07:30
				 kreotodr
				СПАСИБО!
Все получилось...
Не подскажете?
Это баг или фича ROS 6.46.3
Простейший скрипт:
Код: Выделить всё
{
   /ip firewall nat disable 7;  
   :delay 2s;
   /ip firewall nat enable 7;  
}
Из консоли запускается, и делает то, что в нем. Если нажать на кнопку RUN Script ничего не происходит...
https://youtu.be/qVqtcGpntrM 
			 
			
					
				Re: Рандомно выбрать адрес из списка адресов
				Добавлено: 13 фев 2020, 09:38
				 Chupaka
				Подскажу. "7" — это относительное понятие, которое зависит от предыдущего вызова print и может меняться в зависимости от его параметров. В скриптах его не надо использовать. Делайте что-то вроде 
Код: Выделить всё
/ip fi nat disable [find comment="test me"]
Можно попробовать использовать те самые ID в виде "*тыц", но тоже шаткий путь...
 
			 
			
					
				Re: Рандомно выбрать адрес из списка адресов
				Добавлено: 14 фев 2020, 12:37
				 kreotodr
				Спасибо огромное!