как вставить переменную. скриптик

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

сделайте отладку

Посмотре чего в переменых записано

:put $variable
:put [/file get Wi-Fi_Pass.txt contents]

И запускайте. Смотрите где чего теряется

Так же проверте чего у вас в строке fetch формируется. А то может у вас в файле симфор переноса строки есть который тупо впихивается в фетч и оноестествено вылетает, а в переменую руками вы без переносастроки данные вставляете и потому у вас все ок


Есть интересная задача и бюджет? http://mikrotik.site
Ejik76
Сообщения: 47
Зарегистрирован: 02 авг 2016, 12:47

vqd писал(а): 01 авг 2018, 10:00 сделайте отладку

Посмотре чего в переменых записано

:put $variable
:put [/file get Wi-Fi_Pass.txt contents]

И запускайте. Смотрите где чего теряется

Так же проверте чего у вас в строке fetch формируется. А то может у вас в файле симфор переноса строки есть который тупо впихивается в фетч и оноестествено вылетает, а в переменую руками вы без переносастроки данные вставляете и потому у вас все ок
верно в файле есть перенос строки. в переменную берется без переноса, соответственно в фетч берется из переменной без переноса. или я что то не понимаю?
убрать из файла перенос строки убрать никак. можно ли как то брать значение без переноса?


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

с чего вы взяли что без преноса то берется? Там обсалютно все символы включая служебные. На деле вы незнаете как у вас строка фетча формируется. Вот выясните это и все.


Есть интересная задача и бюджет? http://mikrotik.site
Ejik76
Сообщения: 47
Зарегистрирован: 02 авг 2016, 12:47

vqd писал(а): 01 авг 2018, 11:14 с чего вы взяли что без преноса то берется? Там обсалютно все символы включая служебные. На деле вы незнаете как у вас строка фетча формируется. Вот выясните это и все.
Действительно в переменную попадает с переносом и в фетч тоже. отсюда проблема.
можно ли как то брать из файла только печатные символы или указанный диапазон символов из первой строки?

Взял я с потолка, не достаточно компетентен. пытаюсь учитсо. так что Извиняйте если для Вас мои вопросы являются глупыми :)


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

ну например так
{
:global str "123\n\r"
:put [:pick $str 0 [:find in=$str key="\n\r"]]
}


Есть интересная задача и бюджет? http://mikrotik.site
Ejik76
Сообщения: 47
Зарегистрирован: 02 авг 2016, 12:47

vqd писал(а): 01 авг 2018, 11:42 ну например так
{
:global str "123\n\r"
:put [:pick $str 0 [:find in=$str key="\n\r"]]
}
выполнил это:
{
{... :put [/file get Wi-Fi_Pass.txt contents]
{... :global RandomOrg [[:pick [/file get Wi-Fi_Pass.txt contents] 0 8] [:find in=$RandomOrg key="\n\r"]]
{... :put $RandomOrg
{... }
GWxC8Ayx

GWxC8Ayx
Все получилось, а можно как то без указания диапазона брать всё содержимое переменной за исключением переходов и пробелов?


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

ну собственно я вам дал один из вариантов. Дальше уж думайте


Есть интересная задача и бюджет? http://mikrotik.site
Ejik76
Сообщения: 47
Зарегистрирован: 02 авг 2016, 12:47

vqd писал(а): 01 авг 2018, 13:10 ну собственно я вам дал один из вариантов. Дальше уж думайте
Благодарю, за помощь.


Dmitry.Ilinsky
Сообщения: 3
Зарегистрирован: 14 сен 2020, 13:47

Мое почтение,
Сильно обрадовался, увидев решение проблемы выше, но как выяснилось - не так всё и просто (для меня точно).
Есть вот такая команда:
:local remarc ([/system ssh-exec 192.168.1.12 ":put ([/system resource get architecture-name])" as-value]->"output");
возращает она архитектуру удаленного Микротика. И всё бы отлично, но переменная выглядит как:
"mipsbe

"

то есть с лишней строкой. Всё попытки типа :set remarc [:pick $remarc 0 [:find in=$remarc key="\n\r"]] приводят к тому, что :find возвращает пустое значение. Попытка перевести remarc в string/array/num не дает иного результата.

Буду очень признателен за подсказку.
Спасибо


Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Вы сначала посмотрите, что реально возвращается и какой длины:

:put $remarc
:put [:len $remarc]
:put [:typeof $remarc]

Я проверить это не могу, не работаю с ssh.

Вообще запись у Вас кривая какая-то по синтаксису. Если не прокаит Ваш вариант, то есть вариант получить те же сведения через OID с удаленного Тика по SNMP.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ответить