🌐
PowerShell でつくってみた
コマンドプロンプトのping
ネットワークの接続状況を調べるためにping
というコマンドが便利らしい。
というわけで、下記みたいなコマンドを入力して社内サーバーへの接続を調べた。
(google.com
を社内サーバーのアドレスに変えるだけ)
ping google.com
これは4回だけping
を飛ばす方法でこんな感じで結果が返ってくる。
google.com [142.251.42.142]に ping を送信しています 32 バイトのデータ:
142.251.42.142 からの応答: バイト数 =32 時間 =5ms TTL=116
142.251.42.142 からの応答: バイト数 =32 時間 =6ms TTL=116
142.251.42.142 からの応答: バイト数 =32 時間 =5ms TTL=116
142.251.42.142 からの応答: バイト数 =32 時間 =8ms TTL=116
142.251.42.142 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 5ms、最大 = 8ms、平均 = 6ms
ちょっと調べてみると-t
をつければ無限にping
を飛ばし続けてくれるらしい。
ping -t google.com
そうすると応答は以下のようなのがひたすら続く(中止するときはCtrl
+C
を押す)
google.com [142.251.42.142]に ping を送信しています 32 バイトのデータ:
142.251.42.142 からの応答: バイト数 =32 時間 =5ms TTL=116
142.251.42.142 からの応答: バイト数 =32 時間 =6ms TTL=116
142.251.42.142 からの応答: バイト数 =32 時間 =6ms TTL=116
142.251.42.142 からの応答: バイト数 =32 時間 =5ms TTL=116
142.251.42.142 からの応答: バイト数 =32 時間 =6ms TTL=116
142.251.42.142 からの応答: バイト数 =32 時間 =6ms TTL=116
これをずっと流し続ければ、リアルタイムで接続状況が分かる。
でも・・・接続状況を記録したいときは不便だ。
PowerShell だとかなりシンプルになる
ChatGPTに聞いたりして、どうやらPowerShellのほうがいろんなことができるらしいことが分かった。
Powershellだとping
の代わりにTest-Connection
がある。
そして、便利なことに-Quiet
とつけると、結果はTrue
かFalse
の2値だけになる。
あとはGet-Date
と組み合わせて、テキストファイルに出力するようにする。
connect.ps1
$server = "google.com"
for ($i = 0; $i -lt 10; $i++) {
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$pingResult = Test-Connection -ComputerName $server -Count 1 -Quiet
$result = if ($pingResult) {"OK"} else {"NG"}
$logLine = "${timestamp}: [$server] $result`n"
Add-Content "C:\Users\Desktop\result.txt" $logLine
Start-Sleep -Seconds 1
}
するとこういう感じで、時系列の接続状況を記録することができた。
2024-02-13 23:08:57: [google.com] NG
2024-02-13 23:09:00: [google.com] NG
2024-02-13 23:09:03: [google.com] NG
2024-02-13 23:09:06: [google.com] NG
2024-02-13 23:09:09: [google.com] NG
2024-02-13 23:09:36: [google.com] OK
2024-02-13 23:09:40: [google.com] OK
2024-02-13 23:09:43: [google.com] OK
2024-02-13 23:09:46: [google.com] OK
2024-02-13 23:09:49: [google.com] OK
大変勉強になった。
Discussion