Rebooting a switch is easy. Having patience enough to not frantically click the F5 button to check if the webinterface is back online is next to impossible. Here’s a quick PowerShell snippet with a solution!
isOnline?
The isOnline function uses Test-Connection every 2 seconds. The -quiet parameter is handy. It returns a $true if one of both pings are succesfull. Otherwise, it will return a $false.
Then, we log a timestamp for each time the target is switching states. A neat log for future reference!
Finally, we also display our current state in some beautiful colours. PowerShell contains a nifty little trick to update the previous line of our terminal.
Write-Host "`r"
Here you go! Have fun rebooting your networked devices.
Tip: You could also use this instead of ping -t. Sometimes I don’t like the endless stream of output in the command prompt.
function IsOnline {<#.SYNOPSISCheck if target is online or offline. Report when changing state..DESCRIPTIONCheck if target is online or offline. Report when changing state. This will include a list of timestamps..EXAMPLEIsOnline 192.168.1.123.PARAMETER TargetSpecify target.#>[CmdletBinding()]Param([Parameter(Mandatory=$True, Position=1)][string] $Target)while ($True) {$TargetPingable = Test-Connection -Quiet -count 2 $Target -ErrorAction SilentlyContinue$Date = Get-DateSwitch ($TargetPingable) {$false { $TargetState = "OFFLINE"; $CurrentStatusColour = "Magenta" }$true { $TargetState = "ONLINE"; $CurrentStatusColour = "DarkCyan" }default { $TargetState = "in ERROR STATE"; $CurrentStatusColour = "Magenta" }}if ($TargetPingable -eq $TargetPingablePreviousState) {Write-Host -ForegroundColor $CurrentStatusColour "`r$Target is now $TargetState " -NoNewline}else {Write-Host -ForegroundColor DarkGray "`r$Date Targetstate: $TargetState"Write-Host -ForegroundColor $CurrentStatusColour "$Target is now $TargetState " -NoNewline}$TargetPingablePreviousState = $TargetPingable}}