ネットワーク内でどのデバイスがアクティブなのか、つまりどのIPアドレスが現在使用されているかを把握することは、システム管理やトラブルシューティングに非常に役立ちます。本記事では、Windows PowerShellを使った方法と、Ubuntuで同様の役割を果たすスクリプトをご紹介します。
Windows PowerShellを使用したIPアドレススキャン
Windows環境では、PowerShellを使って非常に簡単にネットワーク内のデバイスをスキャンすることができます。以下のスクリプトは、指定したIPレンジ内でどのIPアドレスが「アクティブ」なのかを確認できるシンプルなものです。
PowerShellスクリプト例:
1..254 | ForEach-Object {
$ip = "192.168.11.$_"
if (Test-Connection -ComputerName $ip -Count 1 -Quiet) {
Write-Output "$ip - Active"
} else {
Write-Output "$ip - Inactive"
}
}
スクリプトの説明:
-
1..254
は、IPアドレスの最後のオクテット(192.168.11.x の「x」部分)をループする範囲を定義しています。 -
Test-Connection
コマンドは、指定したIPアドレスに対してPingを実行し、そのアドレスがアクティブかどうかを確認します。 -
Write-Output
は、アクティブな場合は「Active」、そうでない場合は「Inactive」と結果を出力します。
出力例:
192.168.11.1 - Active
192.168.11.2 - Inactive
192.168.11.3 - Active
...
このスクリプトは、ネットワーク管理者が一目でどのIPアドレスが使用中か確認できる便利なツールとなります。
UbuntuでのIPアドレススキャン
次に、Ubuntuの環境でも同様の目的でIPアドレスをスキャンする方法をご紹介します。Linux環境では、ping
コマンドとループ処理を組み合わせることで同じような結果を得ることができます。
Ubuntuでのシェルスクリプト例:
#!/bin/bash
for i in {1..254}
do
ip="192.168.11.$i"
ping -c 1 -W 1 $ip > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "$ip - Active"
else
echo "$ip - Inactive"
fi
done
スクリプトの説明:
-
for i in {1..254}
でIPアドレスの範囲を指定しています。 -
ping -c 1 -W 1 $ip
で各IPアドレスに1回だけPingを送り、タイムアウト時間を1秒に設定しています。 -
if [ $? -eq 0 ]
でPingの成功(アクティブ)か失敗(非アクティブ)かを判定します。 -
echo
で結果を出力します。
出力例:
192.168.11.1 - Active
192.168.11.2 - Inactive
192.168.11.3 - Active
...
結論
今回紹介したように、Windows PowerShellやUbuntuのシェルスクリプトを使って簡単にネットワーク内のデバイスのIPアドレスをスキャンできます。どちらのスクリプトも非常にシンプルでありながら、システム管理者にとっては強力なツールです。日々のネットワーク管理にぜひ活用してみてください。