[Gelöst] In Shell-Skript prüfen, ob Rechner verfügbar?

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
MuX512
Beiträge: 23
Registriert: 11.01.2009 11:06:24

[Gelöst] In Shell-Skript prüfen, ob Rechner verfügbar?

Beitrag von MuX512 » 24.05.2009 09:56:45

Hallo zusammen,

Ich bin auf folgendes kleines Problem gestoßen, bei dem ich um Hilfe bitte:

Zunächst die Beschreibung meiner Situation: In meinem Netzwerk befindet sich ein kleiner zum Server umfunktionierter PC. Auf diesem Server sind alle meine Dateien gespeichert. Ich benutze derzeit zwei Rechner, einen Desktop und ein Notebook. Beim Start der Rechner holen diese, kontrolliert durch Unison, die für sie relevanten Daten vom Server (auf Notebook und Desktop arbeite ich mit unterschiedlichen Teilmengen des Gesamtbestandes auf dem Server). Die Dateien stehen dann lokal zur Verfügung und ich kann an ihnen arbeiten. Beim Herunterfahren synchronisieren die Rechner erneut über Unison mit dem Server, damit die veränderten Dateien dort zur Verfügung stehen.
Dieses einfache Vorgehen funktioniert in meinem Fall, da ich niemals gleichzeitig an verschiedenen Rechnern arbeite. Kollisionen sind daher nicht zu erwarten (zumindest wäre ich meistens in der Lage, diese selber zu lösen).

Nun zu meinem Problem: Beim Desktop kann ich unison einfach direkt in eigenen Skripten, die ich in die rcx.d-Verzeichnisse linke, aufrufen. Ich möchte aber beim Notebook gerne, dass diese Skripte vorher überprüfen, ob der Server überhaupt verfügbar ist. Habe ich das Notebook nämlich außerhalb der Wohnung dabei, bin ich nicht im LAN und könnte dann versuchen, über eine VPN-Verbindung zu synchronisieren, geht auch dieses nicht, entfällt das Synchronisieren (mit evtl. Fehlermeldung im Syslog).

Wie kann ich in einem Skript feststellen, ob ein Rechner verfügbar ist? Gibt es entsprechende Parameter und Rückgabewerte für den ping-Befehl oder noch eine sinnvollere Lösung?
Zuletzt geändert von MuX512 am 28.05.2009 10:52:55, insgesamt 1-mal geändert.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: In Shell-Skript prüfen, ob Rechner verfügbar?

Beitrag von rendegast » 24.05.2009 22:32:57

Hier frage ich meinen apt-proxy:

Code: Alles auswählen

nmap -n -PN --max-rtt-timeout 100 -sT -p 3142 10.1.1.101 | grep "3142/tcp open" || exit 0
#httping -c1 -t 1 -g http://10.1.1.101 -p 3142
httping verwende ich hier nicht, weil ... -- keine Ahnung mehr, ist lang her.
Vermutlich weil der timeout dort minimal 1 Sekunde beträgt.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
whisper
Beiträge: 3392
Registriert: 23.09.2002 14:32:21
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: In Shell-Skript prüfen, ob Rechner verfügbar?

Beitrag von whisper » 25.05.2009 07:05:07

Auf die Idee, nmap zu nehmen muß man erstmal kommen, genial :-)
Alter ist übrigens keine Ausrede, nur Erfahrung, die sich stapelt. 😉

MuX512
Beiträge: 23
Registriert: 11.01.2009 11:06:24

Re: In Shell-Skript prüfen, ob Rechner verfügbar?

Beitrag von MuX512 » 25.05.2009 16:19:57

Ja, das wäre mir so im Traum nicht eingefallen. Aber das ist - nach entsprechender Anpassung auf mein Netz - genau das, wonach ich gesucht habe. Vielen Dank!

PS + OT: Kann man ein Thema hier in diesem Forum irgendwie auf "gelöst" stellen?

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: In Shell-Skript prüfen, ob Rechner verfügbar?

Beitrag von rendegast » 25.05.2009 16:48:46

nmap prüft so nur, ob der Port offen ist,
Für ein Prüfen des Dienstes dahinter ist sicher httping besser geeignet.
Oder nmap muß den Dienst auch identifizieren, was bei einigen (vielen?) wohl auch funktioniert,
hier zBsp mit apache und ssh:

Code: Alles auswählen

nmap -A -T4 scanme.nmap.org playground

Starting nmap ( http://insecure.org/nmap/ )
Interesting ports on scanme.nmap.org (205.217.153.62):
(The 1663 ports scanned but not shown below are in state: filtered)
PORT    STATE  SERVICE VERSION
22/tcp  open   ssh     OpenSSH 3.9p1 (protocol 1.99)
53/tcp  open   domain
70/tcp  closed gopher
80/tcp  open   http    Apache httpd 2.0.52 ((Fedora))
113/tcp closed auth
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11
Uptime 33.908 days (since Thu Jul 21 03:38:03 2005)
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
LessWire
Beiträge: 558
Registriert: 21.11.2004 04:36:04
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Bavaria

Re: In Shell-Skript prüfen, ob Rechner verfügbar?

Beitrag von LessWire » 26.05.2009 03:24:07

MuX512 hat geschrieben:PS + OT: Kann man ein Thema hier in diesem Forum irgendwie auf "gelöst" stellen?
Editiere Deinen ersten Beitrag, dann lässt sich der Titel mit "(gelöst)" o.ä. ändern/erweitern. ;-)

VG, LW
at ~ now.

MuX512
Beiträge: 23
Registriert: 11.01.2009 11:06:24

Re: In Shell-Skript prüfen, ob Rechner verfügbar?

Beitrag von MuX512 » 28.05.2009 11:09:48

rendegast hat geschrieben:nmap prüft so nur, ob der Port offen ist
In meinem einfachen Fall im eigenen LAN reicht das auch vollkommen aus. Ich lasse prüfen, ob der ssh-Port des Dateiservers zu erreichen ist, dann läuft dort mit hoher Wahrscheinlichkeit auch noch der ssh-Dämon, und starte anschließend unison mit dem entsprechenden Synchronisationsprofil. Sollte sich der sshd aus welchen Gründen auch immer verabschiedet haben, schlägt unison ja eh fehl, was ich an der Logdatei erkennen kann.
Das ist zwar wirklich nicht sehr elegant, aber es funktioniert - mehr will ich erst mal nicht.

Antworten