diff --git a/scripts/enter-host.ps1 b/scripts/enter-host.ps1 index 917819f9..4c6a7e26 100755 --- a/scripts/enter-host.ps1 +++ b/scripts/enter-host.ps1 @@ -7,7 +7,8 @@ Specifies the remote hostname or IP address .EXAMPLE PS> ./enter-host.ps1 tux - ⏳ Connecting to 'tux' as user 'markus' using OpenSSH_for_Windows_9.5p1, LibreSSL 3.8.2 + ✅ tux is up and running (3ms latency). + ⏳ Connecting as user 'markus' using OpenSSH_for_Windows_9.5p1, LibreSSL 3.8.2 markus@tux's password: ... .LINK @@ -22,7 +23,6 @@ try { if ($remoteHost -eq "") { $remoteHost = Read-Host "Enter the remote hostname or IP address" $remoteUser = Read-Host "Enter the username at $remoteHost" - } elseif ($IsLinux) { $remoteUser = $(whoami) } else { @@ -30,7 +30,10 @@ try { $remoteUser = $remoteUser.toLower() } - Write-Host "⏳ Connecting to '$remoteHost' as user '$remoteUser' using " -noNewline + & "$PSScriptRoot/ping-host.ps1" $remoteHost + if ($lastExitCode -ne "0") { exit 1 } + + Write-Host "⏳ Connecting as user '$remoteUser' using " -noNewline & ssh -V if ($lastExitCode -ne "0") { throw "'ssh -V' failed with exit code $lastExitCode" } diff --git a/scripts/ping-host.ps1 b/scripts/ping-host.ps1 index 13bd3093..b5f841da 100755 --- a/scripts/ping-host.ps1 +++ b/scripts/ping-host.ps1 @@ -7,7 +7,7 @@ Specifies the hostname or IP address to ping (windows.com by default) .EXAMPLE PS> ./ping-host.ps1 x.com - ✅ x.com is up with 10ms latency. + ✅ x.com is up and running (11ms latency). .LINK https://github.com/fleschutz/PowerShell .NOTES @@ -18,23 +18,19 @@ param([string]$hostname = "windows.com") function GetPingLatency([string]$hostname) { $hostsArray = $hostname.Split(",") - $tasks = $hostsArray | foreach { - (New-Object Net.NetworkInformation.Ping).SendPingAsync($_,1500) - } + $tasks = $hostsArray | foreach { (New-Object Net.NetworkInformation.Ping).SendPingAsync($_,1500) } [Threading.Tasks.Task]::WaitAll($tasks) - foreach($ping in $tasks.Result) { - if ($ping.Status -eq "Success") { return $ping.RoundtripTime } - } + foreach($ping in $tasks.Result) { if ($ping.Status -eq "Success") { return $ping.RoundtripTime } } return 1500 } try { [int]$latency = GetPingLatency($hostname) if ($latency -eq 1500) { - Write-Host "⚠️ Host '$hostname' is offline" - } else { - Write-Host "✅ $hostname is up with $($latency)ms ping latency." - } + Write-Host "⚠️ Host '$hostname' doesn't respond - check the connection or wake the host up." + exit 1 + } + Write-Host "✅ $hostname is up and running ($($latency)ms latency)." exit 0 # success } catch { "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"