Erklärung zu ping Zeile

P

pospiech

Doppel-As
Ich habe nach einer Möglichkeit gesucht die Existens eines Rechners im Netz zu überprüfen und dabei folgendes gefunden
Code:
if (ping -c 1 -n -w 2 MatthiasMobil > /dev/null 2>&1) ; then
Die Ping Anweisung selbst verstehe ich, jedoch den Teil danach nicht.

Kann mir dazu jemand eine kurze Erklärung geben ?

Matthias
 
Code:
>/dev/null

kennst Du sicher, "/dev/null" ist das "schwarze Loch" im Unix-System, dorthin kann man alles schreiben, was man nicht braucht.

Code:
2>
Ist in der shell (/bin/sh) der Fehlerkanal, in "C" wäre das stderr, in perl STDERR.

Code:
&1
ist eine Abkürzung für "da wo stdout" hingeht - in diesem Fall auch /dev/null.

Gruss
Heiko
 
Das heißt die Ausgabe als auch die Fehlermeldung wird nach /dev/null geleitet.
Dann verstehe ich aber nicht warum trotzdem ein TRUE rauskommt, wenn doch alle Ausgaben verschwinden.

Um das ganze schöner zu gestalten habe ich das ganze in eine function gepackt
Code:
# --------------------------------------------------------- #
server_exists ()
{
	TESTSERVER=$1
	if (ping -c 1 -n -w 2 $TESTSERVER > /dev/null 2>&1) ; then
		# echo "$TESTSEVER: ping ok" 		
		return 0   # Success.		
	else
		# echo "$TESTSEVER: ping nicht ok" 
		return 1   # Failed 
	fi
}  


# MAIN ---------------------------------------------------- #

HOSTS=(Matthias MatthiasMobil Sarah 192.168.1.111)
for SERVER in "${HOSTS[@]}"
do
	echo "Teste $SERVER"
	if (server_exists $SERVER); then
		echo " ping ok" 
	else
		echo " ping nicht ok" 
	fi
done

Matthias
 
Eine Funktion gibt i.d.R. einen Wert zurueck. Meist ist es 0, wenn alles glatt lief und eine Zahl, wenn es einen Fehler gab. Verschiedene Zahlen deuten auf verschiedene Fehler hin. Fuer die bash ist nun ein Rueckgabewert von 0 'true' (glaub ich), und der Rueckgabewert hat nichts mit der Ausgabe des Programmes zu tun. Den Rueckgabewert kann man nicht 'umleiten'.
 
Du kannst ja mal die Variable $? auslesen, da steht der Rückgabewert drin:

Code:
ping -c 1 -n -w 2 $TESTSERVER ; echo $?

Wenn es geklappt hat, steht eine 0 drin, wenn nicht, eine Zahl ungleich 0.


Gruß
 
phrenicus schrieb:
Wenn es geklappt hat, steht eine 0 drin, wenn nicht, eine Zahl ungleich 0.
Genau und TRUE oder FALSE, sprich der Rückgabewert ist unabhängig von der Ausgabe - er hat nicht einmal etwas damit zu tun...worauf ich hinaus will ist, dass egal ob du STDOUT/STDERR nach /dev/null umleitest oder nicht, es wird den Rückgabewert nicht beeinflussen...
 

Ähnliche Themen

Verschlüsseltes Backup-Script mit rsync

[gelöst] - for file in ... nur für bestimmte Endungen?

Crontab und Scripts - Problem

Sed: Bestimmtes Feld einer "Zeile mit mehreren Feldern" ergänzen

Queue für copy Script

Zurück
Oben