Enable/Disable new guest user account daily
We have hotspot gateways at different locations. Each uses radius authentication on our Active Directory domain. Rather than creating a single or even a handful of guest accounts, I wanted to have a new one for each day. This should provide for better security. I also didn't want to have to manually enable/disable them everyday.
I have 366 hotspot user accounts created. Each is named guestX where X is the day of year. As in guest1 for the guest account for January 1st. Each account has a different password.
The Disable script is scheduled to run at 23:58 everyday to disable the last 5 days guest accounts. I do 5 days just in case there were some sort of power failure and the script hasn't run for some time.
The Enable script runs at 00:01 everyday to enable that day's guest account.
The Autoit script creates a text file with all the guest accounts with random passwords ready to paste onto the command line. Autoit is a free scripting language for windows that will do most anything. Autoit Homepage
The last piece is up to you, which is how to distribute the usernames/passwords. We have a page on our sharepoint server that will give you that day's username/password.
All scripts were written and run on 2.9.51 systems.
Disable Script
:local date
#get system date
:set date [/system clock get date]
:local day
:local dayc
:local month
:local year
:local leap
:local dayof
#sets the values
:set month [:pick $date 0 3]
:set day [:pick $date 4 6]
#this is just incase the day has a 0 before the number
:set dayc [:pick $date 5 6]
:set year [:pick $date 7 11]
:set leap [:pick $date 0 6]
:set dayof 0
#sets starting date for month
:if ($month = "feb") do={ :set dayof 31 }
:if ($month = "mar") do={ :set dayof 59 }
:if ($month = "apr") do={ :set dayof 90 }
:if ($month = "may") do={ :set dayof 120 }
:if ($month = "jun") do={ :set dayof 151 }
:if ($month = "jul") do={ :set dayof 181 }
:if ($month = "aug") do={ :set dayof 212 }
:if ($month = "sep") do={ :set dayof 243 }
:if ($month = "oct") do={ :set dayof 273 }
:if ($month = "nov") do={ :set dayof 304 }
:if ($month = "dec") do={ :set dayof 334 }
#check for leap year
:if ($leap = "feb/29") do={ :set dayof 366 }
#this removes any leading 0 s from the day
:if ([:pick $date 4 5] = 0) do={ :set day ($dayc)}
#determines day of year #
:if ($dayof < 366) do={ :set dayof ($dayof + $day) }
#disables last 5 days worth, just incase of power failure
:for e from ( $dayof - 5 ) to ( $dayof ) do={ /ip hotspot user disable ("guest" . $e) }
#this accounts for first of the year
:if ($dayof < 4) do={ :set dayof 366 }
:if ($dayof = 366) do={:for e from ( $dayof - 5 ) to ( $dayof ) do={ /ip hotspot user disable ("guest" . $e) }}
Enable Script
:local date
:set date [/system clock get date]
:local day
:local dayc
:local month
:local year
:local leap
:local dayof
#sets variables
:set month [:pick $date 0 3]
#just incase there is a leading 0 in the day
:set dayc [:pick $date 5 6]
:set day [:pick $date 4 6]
:set year [:pick $date 7 11]
:set leap [:pick $date 0 6]
:set dayof 0
#sets start day of year
:if ($month = "feb") do={ :set dayof 31 }
:if ($month = "mar") do={ :set dayof 59 }
:if ($month = "apr") do={ :set dayof 90 }
:if ($month = "may") do={ :set dayof 120 }
:if ($month = "jun") do={ :set dayof 151 }
:if ($month = "jul") do={ :set dayof 181 }
:if ($month = "aug") do={ :set dayof 212 }
:if ($month = "sep") do={ :set dayof 243 }
:if ($month = "oct") do={ :set dayof 273 }
:if ($month = "nov") do={ :set dayof 304 }
:if ($month = "dec") do={ :set dayof 334 }
#checks for leap year
:if ($leap = "feb/29") do={ :set dayof 366 }
#this removes any leading 0 s from the day
:if ([:pick $date 4 5] = 0) do={ :set day ($dayc)}
#totals up the day of year
:if ($dayof < 366) do={ :set dayof ($day + $dayof) }
:log info ($dayof)
#enables proper day
/ip hotspot user enable ("guest" . $dayof)
Autoit Script
;generate usernames and passwords for hotspot.
$file = FileOpen(@ScriptDir & "\users.txt", 1)
; Check if file opened for writing OK
If $file = -1 Then
MsgBox(0, "Error", "Unable to open file.")
Exit
EndIf
for $x = 1 to 365
FileWriteLine($file, "add name=""guest" & $x & """ password=""" & Random(111111, 999999, 1) & """ profile=default disabled=yes" & @CRLF)
Next
FileClose($file)