Prüfen ob Netzwerk "steht"

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Treito, 01.09.2008.

  1. Treito

    Treito Grünschnabel

    Dabei seit:
    29.04.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Hallo,

    ich hab da eigentlich ein ziemlich "simples" Problem, etwas schwer zu beschreiben.

    Ich habe 2 PC's, die per Crossover-Kabel verbunden sind.
    Rechner 1 liest Daten von Rechner 2 per wget.
    Nun ist Rechner 2 nicht zwingend eingeschaltet, wenn Rechner 1 läuft. Solange Rechner 2 deaktiviert ist, bekommt Rechner 1 keine IP zugewiesen und "wget" braucht einfach zu lange zum abfragen.
    Würgaround ist zwar einen Switch dazwischen zu schalten, da so das Netzwerkkabel gesteckt ist, aber ich würde lieber per Script abfragen, ob das Netzwerk steht.
    Wie müsste ich da vorgehen?

    Gruß,

    Sven
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Wolfgang, 01.09.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Entweder zu prüfst mit ping ADDRESSE ob die andere Kiste erreichbar ist, oder du wertest ifconfig aus ... oder ... oder

    Gruß Wolfgang
     
  4. niLs

    niLs òle òle

    Dabei seit:
    10.06.2004
    Beiträge:
    153
    Zustimmungen:
    0
    Ort:
    Hannover
    .. oder oder oder du prüfst via mii-tool, ob die netzwerkkarte einen link hat... oder oder oder :)
     
  5. Treito

    Treito Grünschnabel

    Dabei seit:
    29.04.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Hallo,

    danke erst einmal für die Antworten.
    Ich bin aber noch nicht so fit in der Shell-Programmierung.
    Ich bräuchte eine Prüfroutine (If-Anweisung), die auch möglichst fix geht.
    Rechner 1 ist ein Multimedia-PC mit mythtv. Gleichzeitig ist er NFS-Server. Für den habe ich Skripte und kleine C++-Programme, dass er sich alleine ein- und ausschaltet.
    Rechner 2 verbindet sich mit Rechner 1, mountet das NFS-Verzeichnis (NFS-Client) und speichert dann auf Rechner 1 eine Timerliste ab, damit Rechner 1 weiß, wann sich Rechner 2 einschaltet.
    Rechner 1 fragt dann per Webinterface des Rechners 2 ab, ob er runterfahren darf. Dies geschieht per wget. Bloß ist Rechner 2 ausgeschaltet braucht wget viel zu lange @timeout.
    Daher bräuchte ich im Skript eine If-Anweisung, die wget nur dann aufruft, wenn das Netzwerk "steht".
    Wie setze ich sowas um?

    Gruß,

    Sven
     
  6. #5 sim4000, 01.09.2008
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    So sollte es gehen:
    Code:
    if [ "$(mii-tool | grep eth0: | cut -c50-)" == "ok" ]; then
       echo "Verbindung besteht";
    else
       echo "nix is";
    fi
     
  7. #6 Treito, 04.09.2008
    Zuletzt bearbeitet: 04.09.2008
    Treito

    Treito Grünschnabel

    Dabei seit:
    29.04.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Danke sim, so ähnlich werde ich es versuchen, den cut-Befehl kannte ich zum Beispiel nicht. Aber ich denke, ich nehme dann ifconfig als Grundlage.
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    Hmm, dieses mii-tool habe ich nicht (openSUSE 11.0).
    ethtool erfordert root-Rechte, ifconfig lässt sich nicht so schön auswerten. Gibts noch Alternativen? Ansonsten Tendenz ethtool in die sudoers schmeissen, aber würde ich ungern machen,
     
  8. #7 dosenfleisch, 04.09.2008
    dosenfleisch

    dosenfleisch Foren As

    Dabei seit:
    29.03.2007
    Beiträge:
    75
    Zustimmungen:
    0
    ping geht auch als user.
     
  9. Treito

    Treito Grünschnabel

    Dabei seit:
    29.04.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Ja aber ping braucht Zeit, das Skript sollte aber möglichst schnell ausgeführt werden.
     
  10. #9 Wolfgang, 04.09.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Ping kennt die Option Timeout.

    Und minimal eine Sekunde sollte schon realistisch sein.
     
  11. Treito

    Treito Grünschnabel

    Dabei seit:
    29.04.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Hat ping denn irgendwelche Rückgabewerte? So der Aufbau von sim4000 ist rel. einfach mit der Auswertung, das könnte man bei ethtool quasi übernehmen. ping allerdings gibt ja mehrere Zeilen aus, das müsste man dann in eine Datei umleiten und die Datei dann auslesen, oder sehe ich das falsch?
     
  12. juan_

    juan_ König

    Dabei seit:
    22.01.2004
    Beiträge:
    992
    Zustimmungen:
    0
    Ort:
    Berlin
    nein, ich denke, dass Ping ein Rückgabewert hat. Also true oder false.
    Somit sollte ein
    Code:
     
    if ping == true
        blaaa
    else 
        blaaaa
    end
    
    gehen.


    ciao
     
  13. #12 Wolfgang, 04.09.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Aber sicher hat ping einen Rückgabewert ( $? -ne 0 );
    Code:
    $ ping -w1 -c1 -q wwww.google.com>/dev/null 2>/dev/null && echo ok||echo not ok
    not ok
    $ ping -w1 -c1 -q www.google.com>/dev/null 2>/dev/null && echo ok||echo not ok
    ok
    
    Der Rest ist einfach
     
  14. Treito

    Treito Grünschnabel

    Dabei seit:
    29.04.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Ok, in bash bekomme ich die Abfrage nicht hin, aber die bräuchte ich eh in einem C++-Programm.
    Danke für die Hilfe!
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 Wolfgang, 04.09.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Und warum fragst du dann im Shell Skripte
     
  17. #15 Treito, 04.09.2008
    Zuletzt bearbeitet: 04.09.2008
    Treito

    Treito Grünschnabel

    Dabei seit:
    29.04.2007
    Beiträge:
    8
    Zustimmungen:
    0
    Öhm weil die Abfrage an sich ja in shell ist und ich auch gerne wissen würde, wie man sowas in Shell programmiert, dann könnte ich ggf. die C++-Programme durch Scripte ersetzen.

    Nachtrag:
    Was ist hier nun falsch?

    Code:
    #!/bin/bash
    if [ "$(ping -c 1 -w 1 192.168.3.50)" ]; then
       echo "Verbindung besteht";
    else
       echo "nix is";
    fi
    
    
     
Thema:

Prüfen ob Netzwerk "steht"

Die Seite wird geladen...

Prüfen ob Netzwerk "steht" - Ähnliche Themen

  1. Netzwerkrechner auf Standbye überprüfen und Nachricht senden

    Netzwerkrechner auf Standbye überprüfen und Nachricht senden: Hallo, ich habe ein großes Netzwerk und will überprüfen welcher Rechner davon an ist. Wenn ein Rechner an ist, soll er mir eine Nachricht...
  2. LiMux: Expertengruppe soll mögliche Rückkehr zu Windows prüfen

    LiMux: Expertengruppe soll mögliche Rückkehr zu Windows prüfen: Das von Münchens ehemaligem Oberbürgermeister Christian Ude eigentlich als abgeschlossen erklärte Migrationsprojekt sämtlicher 15000 PCs der...
  3. IF- Anweisen auf einen Bereich prüfen

    IF- Anweisen auf einen Bereich prüfen: Hallo zusammen, kann man in einer IF- Anweisen auf einen Bereich prüfen, z.B. wenn Wert zwischen 7 bis 15 liegt dann … sonst nix :) ? Im...
  4. Prüfen ob ein Datum innerhalb letzten 2 Wochen liegt

    Prüfen ob ein Datum innerhalb letzten 2 Wochen liegt: Hallo, ich bräuchte eine Funktion die prüft ob ein Datum im Format tt.mm.JJJJ innerhalb der letzten 2 Wochen liegt. Oder anders ausgedruckt, ob...
  5. mit einem prüfbefehl mehrere verzeichnisse prüfen (z.b ../check_disk -w 1000 -c 2000)

    mit einem prüfbefehl mehrere verzeichnisse prüfen (z.b ../check_disk -w 1000 -c 2000): hallo leute, wie kann ich mit nur einem prüfbefehl mehrere verzeichnisse auf ihre belegung abfragen und dazu noch schwellwerte vergeben ? bis...