Mikrotik: wi-fi password generator


Скрипт генерирует пароль для wi-fi профиля и отправляет его на емэйл двум получателям: to@example.com и cc@example.com. Отправляет используя почтовый сервер 93.184.216.34 с логином from@example.com и паролем PassW0rd.

Если копия не нужна, то надо убрать переменную cc=$ccdestmail из строчки по отправке.

Заменить эти данные на свои.

Пароль меняет в security profile на профиль с именем test  на wpa-psk и wpa2-psk. Заменить на свой профиль.

Так же в самом низу подставить своё имя профиля.

Введена задержка (delay) в 60 секунд, что б письмо пришло раньше, чем сменится пароль. Время задержки можно менять на любое.

ВНИМАНИЕ: скрипт генерирует пароль примерно 2 минуты.

# MikroTik Random Password Generator
 # with random start offset delay for use with /System Scheduler
 # Author: Bob Burley - April 25, 2011
 # Modified: bakabuka - Jan 9, 2017


# Define the parameters for mail notification
:local destmail to@example.com
:local ccdestmail cc@example.com
:local content "New Wi-Fi password"
:local emailauthuser from@example.com
:local emailfrom from@example.com
:local emailserver 93.184.216.34
:local emailauthpass PassW0rd

:local minRtt
 :local maxRtt
 :local random 0
 :local siteAddress
 :local charStrNum 1
 :local p1
 :local var1
 :local var2
 :local var3
 :local newPassword ""
 # set password length here
 :local newPassLength 8
 # Total characters to choose from is 73
 # Eliminated confusing characters
 # '0' (zero) and Upper Case 'O'
 # '1' (one) and Upper Case 'I' and Lower Case 'l' (L)
 :local charStr1 "23456789ABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghijkmnopqrstuvwxyz23456789"
 :local charStr2 "cN47iKd2bLn8sQz4JAu2PD6Vm5RjTG4UrFY78XewHE3W9gMq62v7a9Z5yf5pC3k6xt9Bh8S3o"
 :local charStr3 "uYswW92z6M5fJynQp6hGm5VSr4oR8k7A2bKq5U3FiZvc8gHP2tdL9E4jBT3X7xC6N4D8e7a93"
 # google.ca (74.125.95.147) - google.com (74.125.95.99) - yahoo.ca (68.180.206.184) - yahoo.com (209.191.122.70)
 :local arraySiteList [:toarray ("74.125.95.147","74.125.95.99","68.180.206.184","209.191.122.70")]
 :foreach siteAddress in=($arraySiteList) do={
 /tool flood-ping $siteAddress count=4 do={
 :if ($sent=4) do={
 :set minRtt $"min-rtt"
 :set maxRtt $"max-rtt"
 }
 :set random ($random + minRtt)
 :while ($random > 59) do={
 :set random ($random -60)
 }
 :set random ($random + maxRtt)
 :while ($random > 59) do={
 :set random ($random -60)
 }
 }
 }
 :delay $random
 :for char from=1 to=$newPassLength step=1 do={
 # Generate number between 0 and 72
 :set var1 ([:pick [/system clock get time] 6 8])
 :set p1 ([:len [/system resource get uptime]])
 :set var2 ([:pick [/system resource get uptime] ($p1-2) $p1])
 :set var3 (($var1 * $var2) / 48)
 # pick next character to add to the new password
 :if ($charStrNum=1) do={
 :set newPassword ($newPassword . [:pick $charStr1 $var3])
 }
 :if ($charStrNum=2) do={
 :set newPassword ($newPassword . [:pick $charStr2 $var3])
 }
 :if ($charStrNum=3) do={
 :set newPassword ($newPassword . [:pick $charStr3 $var3])
 }
 :set charStrNum ($charStrNum + 1)
 :if ($charStrNum = 4) do={
 :set charStrNum 1
 }
 :delay (($var1 + $var2 + $var3) / 5)
 }


 :log info $newPassword
#Sendind e-mail
/tool e-mail send server=$emailserver to="$destmail" cc=$ccdestmail subject="New Wi-Fi Password" body="New Password for test is: $newPassword" user=$emailauthuser password=$emailauthpass from="$emailfrom"
#Delay 1 min
:delay 60
# Change password for security profile named test.
/interface wireless security-profiles set test wpa-pre-shared-key=$newPassword wpa2-pre-shared-key=$newPassword

 

Пароль генерируется на 8 символов с большими и маленькими буквами и цифрами.

Осталось этот скрипт вписать в планировщик и пароль будет автоматом генерироваться и отправляться в почту.