Es gibt Situationen wo man wissen möchte welche Rechner in einem Subnetz zu finden sind. Die erste Wahl fällt hierbei auf das Kommando ping1), wobei es mühselig sein kann jede Adresse einzeln anzupingen. Folgendes Shellscript automatisiert diesen Vorgang:
pingsubnet.sh
#!/bin/bash for ip in $(seq 1 254); do ping -c 1 -w 1 192.168.0.$ip>/dev/null; [ $? -eq 0 ] && echo "192.168.0.$ip UP" || : ; done
Dieses Kommando belegt die Variable $ip mit 1 und erhöht bei jedem Schleifendurchlauf den Wert um 1 bis 254 erreicht ist. jeder Schleifendurchlauf führt nur einen Ping »-c 1« auf jede Adresse des Netzes 192.168.0.$ip und wartet nur eine Sekunde auf Antwort »-w 1«. Auftretende Fehlermeldungen werden verworfen »>/dev/null« und erfolgreiche Antworten, wo der Exitstatus 0 ist »$? -eq 0« werden mit dem echo-Kommando in die Standardausgabe geschrieben.
Fährerweise muss man dazusagen, dass dadurch alle Geräte übersehen werden, welche nicht auf einen Ping antworten. Das Ergebnis ist demnach nicht verlässlich aber es gibt uU mal einen oder mehrere Ansatzpunkte.
— pronto 2015/03/03 15:54