Anzeige:
Ergebnis 1 bis 15 von 15

Thema: Bash script um domains zu checken

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.07.2003
    Ort
    Essen
    Beiträge
    20

    Bash script um domains zu checken

    Dieses Script soll Domains checken und bad or nice ausgeben

    PHP-Code:
    #!/bin/bash

    for name in $(cat ./domains); do
    ping -c 1  $name grep "packets transmitted" cut -" "  -f 4 ;
    if [ $?  -
    eq 0 ];
    then
        
    echo "bad"
    else
        echo 
    "nice"
    fi

    done 
    leider gibt es aber das hier aus

    0
    bad
    1
    bad

    könnte mir vielleicht jemmand helfen danke im vorraus
    GREETINGS
    _-=Thallez=-_
    www.linuxfriends.org

  2. #2
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Ersetze das

    ping -c 1 $name | grep "packets transmitted" | cut -d " " -f 4 ;

    durch das

    ping -c 1 $name >/dev/null 2>&1

    Die Variable $? wird von ping zurueckgegeben

  3. #3
    Registrierter Benutzer
    Registriert seit
    02.07.2003
    Ort
    Essen
    Beiträge
    20
    jetz habe ich aber gar keinen Wert den ich auswerten kann in der Schleife
    weil ping alle aus gabe nach /dev/null leitet
    GREETINGS
    _-=Thallez=-_
    www.linuxfriends.org

  4. #4
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    $? ist ja keine Ausgabe sondern der Rueckgabewert von ping der nicht ausgegeben sondern nur gesetzt wird.

  5. #5
    Registrierter Benutzer
    Registriert seit
    02.07.2003
    Ort
    Essen
    Beiträge
    20
    hier kommt entweder eine 1 oder eine 0

    ping -c 1 $name | grep "packets transmitted" | cut -d " " -f 4

    so bei 0 ist BAD und bei 1 ist nice wie kann ich das sonst lösen
    GREETINGS
    _-=Thallez=-_
    www.linuxfriends.org

  6. #6
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Code:
    ping -c 1 $name >/dev/null 2>&1
    if [ $?  -eq 0 ];
    then
        echo "nice"
    else
        echo "bad"
    fi
    oder noch kuerzer:
    Code:
    if ping -c 1  $name >/dev/null 2>&1
    then
        echo "nice"
    else
        echo "bad"
    fi

  7. #7
    Registrierter Benutzer
    Registriert seit
    02.07.2003
    Ort
    Essen
    Beiträge
    20
    das geht so nicht wenn ich alles was ping ausgibt nach /dev/null schicke habe ich ja nichts was ich mit cut und grep bearbeiten kann
    GREETINGS
    _-=Thallez=-_
    www.linuxfriends.org

  8. #8
    Registrierter Benutzer
    Registriert seit
    02.07.2003
    Ort
    Essen
    Beiträge
    20
    falls ich hier in einer Sackgasse bin nehme ich auch jeden anderen
    vorschlag dankend an wie ich domain checken kann

    es eght eigentlich nurdarum nach änderungen am Nameserver deren erreichbarkeit zu prüfen
    GREETINGS
    _-=Thallez=-_
    www.linuxfriends.org

  9. #9
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Der Code von Fork
    if ping -c 1 $name >/dev/null 2>&1
    then
    echo "nice"
    else
    echo "bad"
    fi
    tut doch genau das was du willst, oder?

    Ping gibt 0 zurück wenns den Rechner erreicht, sonstwas wenn nicht. Der Rückgabewert wird dann ausgewertet. Probiers doch mal aus.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  10. #10
    Registrierter Benutzer
    Registriert seit
    21.01.2003
    Beiträge
    22
    alternativ geht natürlich auch das hier :

    Code:
    if ping -q -c 1 meinedomain.de 2>&1 | grep -q ', 0% packet loss'; then
      # juhuu ping war erfolgreich
    else
      # ping war nicht erfolgreich
    fi
    aber die oben genannte lösung ist irgendwie sinnvoller
    Gentoo Base System 1.4.9, Linux 2.6.6rc1

  11. #11
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Das Problem wenn man auf genaue Ausgabetexte untersucht ist das sich diese natürlich auch mal etwas ändern können(z. B. auch andersprachige Ausgabe). Der exitcode ist deswegen auch robuster.

  12. #12
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    ausserdem ist der Exitcode ja genau für das da

    MfG Peschmä

    P.S. und du kriegst auch true, wenn mal ein Paket verloren ging. Macht hier aber keinen Unterschied weils nur eines ist
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  13. #13
    Registrierter Benutzer
    Registriert seit
    02.07.2003
    Ort
    Essen
    Beiträge
    20
    ich habe die lösung von amiga verwendet es geht jetzt ohne problem

    danke für eure hilfe
    GREETINGS
    _-=Thallez=-_
    www.linuxfriends.org

  14. #14
    Registrierter Benutzer
    Registriert seit
    17.07.2003
    Beiträge
    87
    Wobei eine whois Abfrage natürlich sinnvoller ist, denn gewisse Domains sind auch manchmal nicht zu erreichen

    Sogar google hatte heute bei mir eine downtime von < 1Minute
    (von mehreren $Hosts aus angepingt - keine Antwort)

  15. #15
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650
    Um zu Testen ob mein Router wirklich online ist und nicht wieder die Leute von Teledumm die Leitung nur unidirektional betreiben verwende ich dieses Skript, das minütlich über Crontab aufgerufen wird:

    Code:
    #!/bin/sh
    # checkdsl.sh: restart ... if 100% ping loss.
    # For use with crontab (like cron.hourly). (nobodyo<nospam>@</nospam>web.de)
    # Ping to the access point and DNS servers.
    for HOST in 212.114.214.1 212.114.152.1 194.25.2.129 62.96.128.66 195.3.96.67 193.193.144.12 145.253.2.75 195.202.33.68 193.189.224.2 193.189.244.197 194.25.2.130 194.162.162.194 194.183.128.36 62.26.26.62 212.44.160.8 193.141.40.42 134.60.1.111; do
    { ping -Q 0x02 -q -w 3 -c 1 -s 56 $HOST &> /dev/null ; }&& exit
    done
    # cinternet --verbose --hangup
    cinternet --verbose --stop
    killall -15 pppd &>/dev/null &
    # nohup /bin/terminate smpppd &>/dev/null &
    if [ -z "`ps ax | awk '{print $5}' | egrep "(^|/)smpppd"`" ];
    then
      /usr/sbin/smpppd
      sleep 3
    # /usr/sbin/rcsmpppd restart
    fi
    cinternet --verbose --start

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •