====== Скрипт переустановки пароля пользователя MikroTik ====== Скрипт смены пароля пользователя, только для исполнения в терминале ROS { :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 ""; } } Скрипт интересен строкой преобразования кода символа из переменной $key, сграбленного с клавиатуры терминала, в сам символ. '':local char [[:parse_ckgedit_quot_ckgedit_quot:pick_ckgedit_quot_0123456789abcdef_ckgedit_quot_key_chevronescc_4_0xf:pick_ckgedit_quot_0123456789abcdef_ckgedit_quot_key_0xf_ckgedit_quot_ckgedit_quot|pick "0123456789ABCDEF" ($key & 0xF)]\")"]]''