PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : prüfen mit ping


Maik
01.11.2003, 12:20
Hallo,

ich schreibe hier ein kleines Script mit dem ich per rsync Daten sichern möchte. Ich möchte in diesem Script nun erstmal testen ob der Server auf dem die Daten gesichert werden sollen überhaupt erreichbar ist und bis jetzt habe ich mir das so gedacht:


#! /bin/bash

( ping -c1 host.domain.tld 1>/dev/null 2>/dev/null ) || exit

echo Online
...


So wird erst geprüft ob der Server erreichbar ist und wenn das nicht der Fall ist wird das Script beendet.
Ich wollte einfach nur mal fragen was ihr davon haltet, oder ob jemand vielleicht eine elegantere Möglichkeit kennt.

mfG Xothous


Caminus
01.11.2003, 12:26
#!/bin/bash
ping -c1 host.domain.tld 1>/dev/null 2>/dev/null
[ $? -ne 0 ] && echo "Offline"; exit 1

So würde ich das wahrscheinlich machen

Maik
01.11.2003, 12:29
Also das "echo Online" war nur als Beispiel für weiteren Code gedacht. Das soll später per cronjob erledigt werden und somit keine Ausgaben erzeugen.

Jan Krüger
01.11.2003, 13:54
Ich würde noch ein Timeout einfügen, sonst dauert der ping verdammt lange, nämlich bis zum Ablauf der TTL, und die ist laut Manpage auf den meisten Unix-Systemen 255... also:
ping -c 1 -w 10 ....

Noch was: wenn der Zielhost ICMP-Pakete filtert, ist es wahrscheinlich schlauer, stattdessen eine TCP-Verbindung aufzubauen. Geht am einfachsten mit netcat:
nc -z -w 10 <host> <port>