Thema: OS X Shell Variablen und Rückgabewerte?

Dieses Thema im Forum "Software" wurde erstellt von Frank71, 8. Juni 2004.

  1. Frank71

    Frank71 New Member

    Hallo,
    seit einigen Tagen versuche ich ein Shellscript zu erstellen.
    Dabei brauche ich den Rückgabewert, der normalerweise in der Variable $? angegeben wird.

    z.B:

    #!/bin/sh

    # testen ob Server erreichbar
    ping -c 1 192.168.10.246 > /dev/null
    if [ $? = 1 ]
    then
    echo Server nicht erreichbar
    else
    echo Server erreichbar
    fi

    Die OSX Shell scheint aber keinen Rückgabewert zu unterstützen.

    Kann mir da irgendjemand helfen? ;(
     
  2. hofmeyer

    hofmeyer New Member

    Da liegt ein kleiner Denkfehler vor. Der Rückgabewert gibt Auskunft über den Erfolg des ausgeführten Prozesses. In Deinem Fall wird der immer 0 sein, da der ping Prozess auch bei einem Server, der nicht existiert, ein Ergebnis ausliefert und damit ordnungsgemäß gelaufen ist.
    Anders ist es, wenn Du z.B. ein
    cd /xyz
    eingibst. Da das Verzeichnis nicht existiert konnte der Befehl nicht komplett ausgeführt werden und es gibt den Rückgabewert 1
    echo $?
    1

    Mach doch mal folgendes:

    #!/bin/sh

    # testen ob Server erreichbar
    ping -c 1 $1 | grep "bytes from" > /dev/null
    if [ $? = 1 ]
    then
    echo Server nicht erreichbar
    else
    echo Server erreichbar
    fi

    Abspeichern unter kommandoname und mit

    kommandoname 192.168.0.1

    (oder einer beliebigen Adresse) aufrufen

    Friedhelm
     
  3. Frank71

    Frank71 New Member

    Hallo
    hofmeyer,

    Vielen Dank, habs schon ausprobiert. Deine Lösung funktioniert super. :D


    Es wundert mich allerdings schon das meine Lösung unter Suse Linux funktioniert hat.

    Schönen Tag noch
    Frank71
     
  4. Frank71

    Frank71 New Member

    Hallo,
    seit einigen Tagen versuche ich ein Shellscript zu erstellen.
    Dabei brauche ich den Rückgabewert, der normalerweise in der Variable $? angegeben wird.

    z.B:

    #!/bin/sh

    # testen ob Server erreichbar
    ping -c 1 192.168.10.246 > /dev/null
    if [ $? = 1 ]
    then
    echo Server nicht erreichbar
    else
    echo Server erreichbar
    fi

    Die OSX Shell scheint aber keinen Rückgabewert zu unterstützen.

    Kann mir da irgendjemand helfen? ;(
     
  5. hofmeyer

    hofmeyer New Member

    Da liegt ein kleiner Denkfehler vor. Der Rückgabewert gibt Auskunft über den Erfolg des ausgeführten Prozesses. In Deinem Fall wird der immer 0 sein, da der ping Prozess auch bei einem Server, der nicht existiert, ein Ergebnis ausliefert und damit ordnungsgemäß gelaufen ist.
    Anders ist es, wenn Du z.B. ein
    cd /xyz
    eingibst. Da das Verzeichnis nicht existiert konnte der Befehl nicht komplett ausgeführt werden und es gibt den Rückgabewert 1
    echo $?
    1

    Mach doch mal folgendes:

    #!/bin/sh

    # testen ob Server erreichbar
    ping -c 1 $1 | grep "bytes from" > /dev/null
    if [ $? = 1 ]
    then
    echo Server nicht erreichbar
    else
    echo Server erreichbar
    fi

    Abspeichern unter kommandoname und mit

    kommandoname 192.168.0.1

    (oder einer beliebigen Adresse) aufrufen

    Friedhelm
     
  6. Frank71

    Frank71 New Member

    Hallo
    hofmeyer,

    Vielen Dank, habs schon ausprobiert. Deine Lösung funktioniert super. :D


    Es wundert mich allerdings schon das meine Lösung unter Suse Linux funktioniert hat.

    Schönen Tag noch
    Frank71
     
  7. Achmed

    Achmed New Member

    Blos so am rande:
    Wenn du einen Webserver überprüfen willst,
    wäre es sinnvoller den dienst zu überprüfen. sprich ein lynx http://www.asdasdasd.de zu machen.
    Ein Ping muß ja nicht immer heißen das die Dienste laufen.
    ;)
     

Diese Seite empfehlen