Скриптик переустановки пароля пользователя
Добавлено: 09 июн 2020, 14:59
Вот что вышло из баловства с [:terminal inkey]
Скрипт интересен строкой преобразования кода символа из переменной $key, сграбленного с клавиатуры терминала, в сам символ.
Сам такое не написал бы никогда. Взята у Чупакабры вот отсюда https://habr.com/ru/post/337978/ (см. раздел статьи "Парсинг строки с кодом на лету и ее выполнение). Там же читайте объяснение как строка кода для преобразования собирается с помощью :parse и работает за счет вторых [] !
Я лишь преобразовал функцию Чупакабры по преобразованию кода символа в сам символ в функцию ввода строки $EnterString, которую можно вынуть из скрипта и пользоваться вообще по своему усмотрению.
P/S. Чупакабра, конечно, гений. Наверное уже работает в Микротик ... Мне бы так писать скрипты как он ! Хоть бы познакомиться когда-нибудь ...
Код: Выделить всё
# Скрипт смены пароля пользователя
# только для исполнения в терминале ROS
# by Sertik 09/06/2020
{
:global EnterString do={
:local cont 0; :local string ""
:while ($cont!=13) do={
:local key ([:terminal inkey])
:if ($key!=13) do={
:local char [[:parse "(\"\\$[:pick "0123456789ABCDEF" (($key >> 4) & 0xF)]$[:pick "0123456789ABCDEF" ($key & 0xF)]\")"]]
:set string ("$string"."$char")}
:set cont $key
}
:return $string}
;
:put "Please, enter Username:"
:local RegUser [$EnterString];
:put "";
:if ([:len [/user find disabled=no name=$RegUser]]!=0) do={:put "Ok, a user with this name was found"; :put "";
:put "Please, enter new password for this user:"
:local newPass [$EnterString];
[/user remove $RegUser];
[/user add name=$RegUser password=$newPass group=full];
:put "";
:put "The user has been re-created, the password has been changed";
:put ("New user`s password: "."$newPass");
:put "Don't forget to set up access restrictions based on ip addresses";
} else={:put ("User "."$RegUser "."not found"); :put "";
}
}
Код: Выделить всё
:local char [[:parse "(\"\\$[:pick "0123456789ABCDEF" (($key >> 4) & 0xF)]$[:pick "0123456789ABCDEF" ($key & 0xF)]\")"]]
Я лишь преобразовал функцию Чупакабры по преобразованию кода символа в сам символ в функцию ввода строки $EnterString, которую можно вынуть из скрипта и пользоваться вообще по своему усмотрению.
P/S. Чупакабра, конечно, гений. Наверное уже работает в Микротик ... Мне бы так писать скрипты как он ! Хоть бы познакомиться когда-нибудь ...