<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Mikrotik.moscow [тема: Возможно ли, чтобы в переменной из текстового файла было 8 МБ?]</title>
		<link>http://mikrotik.moscow</link>
		<description>Новое в теме Возможно ли, чтобы в переменной из текстового файла было 8 МБ? форума RouterOS на сайте Mikrotik.moscow [mikrotik.moscow]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Fri, 31 Jul 2026 19:13:34 -0400</pubDate>
		<item>
			<title>Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396061">Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			@optio Я действительно пропустил -c в конце. Теперь я думаю, что веб-сервер не отправляет количество запрошенных байт, потому что может не поддерживать передачу по частям (chunking) и посылает все данные одним куском. Переменная data может вместить только 64512 байт — это то, что возвращает RouterOS. Остальная часть файла игнорируется, и моё прежнее предположение, что это был своего рода скользящий окно, оказалось неверным. Если поддержка chunking есть на другой стороне, то RouterOS должен работать правильно. Кстати, это способ проверить, поддерживает ли веб-сервер chunking в скриптах RouterOS. Если вы получаете длину (len) 64512 или больше, чем запрошенное количество байт +1, значит chunking не поддерживается. ПРОВЕРКА: :put ([/tool fetch url="https://view.sentinel.turris.cz/greylist-data/greylist-latest.csv" http-header-field="Range: bytes=0-80" output=user as-value]-&gt;"data")  <br /># Условия использования смотрите на <noindex><a href="https://view.sentinel.turris.cz/greylist-data/LICENSE" target="_blank" rel="nofollow" >https://view.sentinel.turris.cz/greylist-data/LICENSE</a></noindex>. :put [:len ([/tool fetch url="https://view.sentinel.turris.cz/greylist-data/greylist-latest.csv" http-header-field="Range: bytes=0-80" output=user as-value]-&gt;"data")]  <br />81 <br />
			<i>31.03.2024 10:17:00, msatter.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396061</link>
			<guid>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396061</guid>
			<pubDate>Sun, 31 Mar 2024 10:17:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396060">Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Это операция на стороне сервера для заголовка Range (сервер возвращает байты в зависимости от значения заголовка Range), подробнее см. <noindex><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range" target="_blank" rel="nofollow" >https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range</a></noindex>. Вот в чём мой главный аргумент: да, вы можете извлечь из возвращённых байтов некоторые байты, но получить скачивание всего файла частями таким способом не получится. Если вы скачиваете весь файл с помощью fetch, то столкнётесь с проблемой, о которой тут упоминается — вы не сможете использовать /file/read, чтобы читать все байты по частям в переменную. Если же заголовок Range для fetch будет работать, тогда это станет возможным. <br />
			<i>31.03.2024 10:10:00, optio.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396060</link>
			<guid>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396060</guid>
			<pubDate>Sun, 31 Mar 2024 10:10:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396059">Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			@optio Извините, но исходя из результатов экспериментов, которые вы опубликовали, может быть так, что «Range: bytes=0-1» читается или интерпретируется как (в псевдокоде): «Range: from_offset=0 length=64512» (потому что любая длина меньше 64512 округляется до 64512) или просто игнорируется (по каким-то причинам) и всегда возвращает первые 64512 байт, независимо от указанных вами значений диапазона. Нельзя ли во второй операции извлечь первые 2 байта из полученных 64512? Мне кажется, что нужно проверить, действительно ли учитывается часть «from_offset=0». То есть возвращает ли (в вашей команде/настройке) «Range: bytes=1-1» 64512 байт, причем первый из них будет 07? <br />
			<i>31.03.2024 09:32:00, jaclaz.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396059</link>
			<guid>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396059</guid>
			<pubDate>Sun, 31 Mar 2024 09:32:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396058">Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Возможно, вы забыли аргумент -c… $ wc --help &nbsp;<br />Использование: wc [OPTION]... [FILE]...  <br />или: wc [OPTION]... --files0-from=F  <br />Выводит количество строк, слов и байт для каждого файла, а также итоговую строку, если указано более одного файла. Слово — это последовательность печатных символов ненулевой длины, разделённая пробелами. &nbsp;<br />... &nbsp;<br /> &nbsp;-c, --bytes &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;выводить количество байт &nbsp;<br />... Всё просто, скачивайте через fetch и curl с тем же заголовком Range: &nbsp;<br />:put ([/tool fetch url="https://public-dns.info/nameservers-all.txt" http-header-field="Range: bytes=0-1" output=user as-value]-&gt;"data")  <br />2607:5300:203:1797::53 &nbsp;<br />... 64512 — это просто неверное количество данных, данные должны содержать только первые 2 байта (в данном случае символы 2 и 6), потому что задан заголовок Range, и если он правильно отправлен, сервер отдаст только их, как при использовании curl: &nbsp;<br />curl -s -H 'Range: bytes=0-1' <noindex><a href="https://public-dns.info/nameservers-all.txt" target="_blank" rel="nofollow" >https://public-dns.info/nameservers-all.txt</a></noindex> &nbsp;<br />26 <br />
			<i>31.03.2024 09:08:00, optio.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396058</link>
			<guid>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396058</guid>
			<pubDate>Sun, 31 Mar 2024 09:08:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396057">Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Читайте это так: ставите [:len ...... -&gt;"data")]. Команда Curl wc — это количество слов, а не байт. Обновление: запустил строку в Терминале, и RouterOS всегда читает 64512 байт, при этом используется только первая цифра из 0-1. “downloaded=63;duration=00:00:01;status=finished”, а 63 * 1024 = 64512 байт. RouterOS здесь немного сокращает, думая, что данные будут помещены в переменную, и максимальный размер — 64512 байт, так что почему бы не впихнуть всё туда целиком, а пользователь уже сам может взять всё или часть. <br />
			<i>31.03.2024 01:03:00, msatter.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396057</link>
			<guid>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396057</guid>
			<pubDate>Sun, 31 Mar 2024 01:03:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396056">Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Этого не должно было происходить, поскольку заголовок Range установлен. 64512 — это потому, что загружаются все данные и ограничиваются этим значением, что неправильно (должно быть 2, как в curl). <br />
			<i>30.03.2024 21:49:00, optio.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396056</link>
			<guid>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396056</guid>
			<pubDate>Sat, 30 Mar 2024 21:49:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396055">Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			@optio В этом нет ничего странного, Data — это переменная, и максимум — 64512 байт. У меня не получилось читать части из файлов, поэтому пока занимаюсь другими делами, пока это не исправят… когда-нибудь. <br />
			<i>30.03.2024 20:57:00, msatter.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396055</link>
			<guid>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396055</guid>
			<pubDate>Sat, 30 Mar 2024 20:57:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396054">Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Подозреваю, что в аргументе http-header-field для команды fetch есть баг, возможно, он неправильно отправляется (я не проверял это на локальном веб-сервере для анализа). При загрузке данных всегда получается 64512 байт, независимо от того, какой диапазон указан в заголовке, когда output=user as-value: &nbsp;<br />:put [:len ([/tool fetch url="https://public-dns.info/nameservers-all.txt" http-header-field="Range: bytes=0-1" output=user as-value]-&gt;"data")]  <br />64512 &nbsp;<br /><br />Когда output=file, скачивается весь файл: &nbsp;<br />/tool fetch url="https://public-dns.info/nameservers-all.txt" http-header-field="Range: bytes=0-1" output=file &nbsp;<br />:delay 3 &nbsp;<br />:put [get "nameservers-all.txt" size]  <br />1396869 &nbsp;<br /><br />Это говорит о том, что заголовок Range отправляется некорректно. При использовании curl всё нормально: &nbsp;<br />curl -s -H 'Range: bytes=0-1' <noindex><a href="https://public-dns.info/nameservers-all.txt" target="_blank" rel="nofollow" >https://public-dns.info/nameservers-all.txt</a></noindex> | wc -c &nbsp;<br />2 <br />
			<i>30.03.2024 16:53:00, optio.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396054</link>
			<guid>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396054</guid>
			<pubDate>Sat, 30 Mar 2024 16:53:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396053">Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Ещё один вверху? <br />
			<i>29.03.2024 23:28:00, Kataius.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396053</link>
			<guid>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396053</guid>
			<pubDate>Fri, 29 Mar 2024 23:28:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396052">Возможно ли, чтобы в переменной из текстового файла было 8 МБ?</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Всем привет! Хочу сделать скрипт, который будет запускаться раз в неделю и обновлять список адресов на Mikrotik. Исходя из этой темы: <noindex><a href="http://forum.mikrotik.com/t/max-size-of-variables-still-at-4096-anwser-is-no/168007/6" target="_blank" rel="nofollow" >http://forum.mikrotik.com/t/max-size-of-variables-still-at-4096-anwser-is-no/168007/6</a></noindex> я нашёл очень полезный скрипт для создания переменных. Пытаюсь импортировать файл file.txt размером 8 МБ, но он обрезается примерно до 3 МБ. Я что-то делаю не так или так не получится? Спасибо! Мой скрипт такой:<br /><br />:global thefile ""<br />{<br /> &nbsp; &nbsp;:local url &nbsp; &nbsp; &nbsp; &nbsp;<noindex><a href="http://public-dns.info/nameservers-all.txt" target="_blank" rel="nofollow" >http://public-dns.info/nameservers-all.txt</a></noindex> ;<br /> &nbsp; &nbsp;:local filesize &nbsp; ([/tool fetch url=$url as-value output=none]-&gt;"downloaded")<br /> &nbsp; &nbsp;:local maxsize &nbsp; &nbsp;64512 ; # максимальный поддерживаемый размер читаемого блока из файла<br /> &nbsp; &nbsp;:local start &nbsp; &nbsp; &nbsp;0<br /> &nbsp; &nbsp;:local end &nbsp; &nbsp; &nbsp; &nbsp;($maxsize - 1)<br /> &nbsp; &nbsp;:local partnumber ($filesize / ($maxsize / 1024))<br /> &nbsp; &nbsp;:local reminder &nbsp; ($filesize % ($maxsize / 1024))<br /> &nbsp; &nbsp;:if ($reminder &gt; 0) do={ :set partnumber ($partnumber + 1) }<br /> &nbsp; &nbsp;:for x from=1 to=$partnumber step=1 do={<br /> &nbsp; &nbsp; &nbsp; &nbsp; :set thefile ($thefile . ([/tool fetch url=$url http-header-field="Range: bytes=$start-$end" as-value output=user]-&gt;"data"))<br /> &nbsp; &nbsp; &nbsp; &nbsp; :set start &nbsp; ($start + $maxsize)<br /> &nbsp; &nbsp; &nbsp; &nbsp; :set end &nbsp; &nbsp; ($end &nbsp; + $maxsize)<br /> &nbsp; &nbsp;}<br />}<br /><br />#:log info "debug_thefile=$thefile"<br />#/file remove [find where name="check.txt"];<br />#:execute ":put \$thefile" file=check.txt;<br /><br />:global content value=$thefile;<br />:local contentLen value=[:len $content];<br />:local lineEnd value=0;<br />:local line value="";<br />:local lastEnd value=0;<br />:local addressListName;<br />:set addressListName "DNS-DOH";<br /><br />:if ($thefile != null) do={<br /> &nbsp;:log info "Появились новые DNS"<br /> &nbsp;/ip firewall address-list remove [/ip firewall address-list find list=$addressListName]<br /> &nbsp;:do {<br /> &nbsp; &nbsp; &nbsp;:set lineEnd [:find $content "\n" $lastEnd ] ;<br /> &nbsp; &nbsp; &nbsp;:set line [:pick $content $lastEnd $lineEnd] ;<br /> &nbsp; &nbsp; &nbsp;:set lastEnd ( $lineEnd + 1 ) ;<br /> &nbsp; &nbsp; &nbsp;:local entry [:pick $line 0 $lineEnd ]<br /> &nbsp; &nbsp; &nbsp;:if ($entry~"^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}") do={<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;:if ( [:len $entry ] &gt; 0 ) do={<br />#:log info "debug_entry=$entry"<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/ip firewall address-list add list=$addressListName address=$entry;<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br /> &nbsp; &nbsp; &nbsp;} <br /> &nbsp; &nbsp;} while=($lineEnd &lt; $contentLen);<br /> &nbsp;} else={<br /> &nbsp;:log info "В списке нет DNS"<br />} <br />
			<i>29.02.2024 18:34:00, Kataius.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396052</link>
			<guid>http://mikrotik.moscow/forum/forum57/85400-vozmozhno-li_-chtoby-v-peremennoy-iz-tekstovogo-fayla-bylo-8-mb/message396052</guid>
			<pubDate>Thu, 29 Feb 2024 18:34:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
	</channel>
</rss>
