I was asked to create 365 (1 year) of WiFi (daily) guest access accounts, and export them to CSV.
Of course I didn’t want to create them by hand.. this is where PowerShell came in. I used the following PowerShell script to create random WiFi guest accounts:
# Number of days to generate, default = 365 $NumDays = 365 $AccessGroup = "Gasten" $ExpiryTime = "20:00" $StartTime = "07:00" $OutputCSV = "C:\TEMP\wireless.csv" $SshHost = "127.0.0.1" $SshUser = "someuser" $access_codes = @() # Start SSH session New-SshSession $SshUser $SshHost Invoke-Ssh "z" Invoke-Ssh "conf t" Invoke-Ssh "wireless F" Invoke-Ssh "conf t" Invoke-Ssh "radius-server local" $i = 0; do { # WSEM format: mm/dd/yyyy hh:mm $date = (Get-Date).AddDays($i) $date2 = Get-Date $date -Format "dd-MM-yyyy" $date = Get-Date $date -format "MM:dd:yyyy" $pass = RandomPassword 4 $user = RandomPassword 4 $output = "rad-user $user password 0 $pass group $AccessGroup guest expiry-time $ExpiryTime expiry-date $date start-time $StartTime start-date $date" # add user through SSH Invoke-ssh $output $Response = New-Object PSObject Add-Member -InputObject $Response -MemberType NoteProperty -Name "Datum" -Value $date2 Add-Member -InputObject $Response -MemberType NoteProperty -Name "Gebruikersnaam" -Value $user Add-Member -InputObject $Response -MemberType NoteProperty -Name "Wachtwoord" -Value $pass $access_codes += $Response $i++; } while ( $i -le $NumDays ) # Save and disconnect SSH Invoke-ssh "write mem" Remove-SshSession # Export to CSV $access_codes | Export-Csv $OutputCSV # Helper functions function RandomPassword ([int]$intPasswordLength) { $strNumbers = "1234567890" $strCapitalLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" $strLowerLetters = "abcdefghijklmnopqrstuvwxyz" $rand = new-object random for ($a=1; $a -le $intPasswordLength; $a++) { if ($a -gt 3) { $b = $rand.next(0,3) + $a $b = $b % 3 + 1 } else { $b = $a } switch ($b) { "1" {$b = "$strNumbers"} "2" {$b = "$strCapitalLetters"} "3" {$b = "$strLowerLetters"} } $charset = $($b) $number = $rand.next(0,$charset.Length) $RandomPassword += $charset[$number] } return $RandomPassword }
Special thanks to Joel Bennett’s SharpSSH wrapper for PowerShell (located here: http://huddledmasses.org/scriptable-ssh-from-powershell/) which I used to automate the command line commands for the HP WSEM.
This shows the great power of PowerShell for automating virtually anything!
Recent Posts
You have probably been using Home Assistant for quite a while, but lately you have wondered how to enable remote access to your Home Assistant installation. This is a very common question and one way...
As you might know, Google has shut down the Works with Nest program since the 31st of August 2019. Since then there was no official way to integrate Nest products with Home Assistant. Lets not talk...