1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

HowTo Script zur Überprüfung der Netzwerkkonektivität

Dieses Thema im Forum "Raspberry Pi" wurde erstellt von aragorn, 16. November 2012.

  1. aragorn
    Offline

    aragorn Guest

    hab das script auch auch noch mal angepasst und etwas erweitert:
    Code:
    #!/bin/bash
    #
    # cron script for checking w(lan) connectivity
    #
    # /var/spool/cron/crontabs/root: * * * * * /etc/init.d/check-eth0.sh
    #
    # v1.21 (24.12.2012) modified by aragorn (ipc.pebkac.at)
    #--------------------------------------------------
    
    IP_FOR_TEST="192.168.1.11"
    PING_COUNT=1
    PING="/bin/ping"
    INTERFACE="eth0"
    LOGup=0
    SaveFFLAG=0
    FFLAG="/opt/check_lan/stuck.fflg"
    LOGFILE="/var/log/$(basename $0 .sh).log"
    _maxlogsize="2048"
    _logrotate="1"
    USBmodul="ftdi_sio"
    
    ### - ###
    
    function _RotateFile () {
        # check size of FILE
        if [ -f "$1" ]; then
            FileSize=$(stat --printf="%s" $1)
            [ -z "$FileSize" ] && FileSize=0
            if [ "$FileSize" -gt "$_maxlogsize" ]; then
                if [ "$_logrotate" == 1 ]; then
                    echo "$(basename $0 .sh): rotating file $1"
                    logger "$(basename $0 .sh): rotating file $1"
                    mv -f $1 ${1}.1 >/dev/null 2>&1
                else
                    echo "$(basename $0 .sh): resetting file $1"
                    logger "$(basename $0 .sh): resetting file $1"
                    rm -f $1 >/dev/null 2>&1
                fi
                touch $1
            fi
        fi
    }
    
    function _LogIt () {
        _RotateFile $LOGFILE
        echo "[$(date +"%d/%m/%Y %H:%M:%S")] $1" >> $LOGFILE
    }
    
    # ping test
    $PING -c $PING_COUNT $IP_FOR_TEST > /dev/null 2> /dev/null
    if [ $? -ge 1 ]; then
        _LogIt "$INTERFACE is down"
        echo 08 > /sys/devices/platform/bcm2708_usb/regoffset
        echo 0x31 > /sys/devices/platform/bcm2708_usb/regvalue
        if [ "$SaveFFLAG" == 1 ]; then
            [ ! -d /opt/check_lan ] && mkdir -p /opt/check_lan
            _RotateFile $FFLAG
            touch $FFLAG
            date >> $FFLAG
            cat /sys/devices/platform/bcm2708_usb/regoffset >> $FFLAG
            cat /sys/devices/platform/bcm2708_usb/regvalue >> $FFLAG
        fi
        if [ -n "$(lsmod | grep $USBmodul)" ]; then
            _LogIt "USB Treiber entladen.."
            modprobe -r $USBmodul
            sleep 2
            _LogIt "USB Treiber laden.."
            modprobe $USBmodul
        fi
    else
        [ "$LOGup" == 1 ] && _LogIt "$INTERFACE is up"
        #rm -f $FFLAG 2>/dev/null
        dummy=1
    fi
    #---------------------------------------------------------------
    
    altes, fehlerhaftes script (damit die veränderungen nachvollzogen werden können)
    Code:
    #!/bin/bash
    #
    # cron script for checking w(lan) connectivity
    #
    # /var/spool/cron/crontabs/root: * * * * * /etc/init.d/check-eth0.sh
    #
    # v1.1 (16.11.2012) modified by aragorn (ipc.pebkac.at)
    #--------------------------------------------------
    
    IP_FOR_TEST="192.168.1.1"
    PING_COUNT=1
    PING="/bin/ping"
    INTERFACE="eth0"
    SaveFFLAG=0
    FFLAG="/opt/check_lan/stuck.fflg"
    LOGup=0
    LOGFILE="/var/log/$(basename $0 .sh).log"
    _maxlogsize="2048"
    _logrotate=1
    
    ### - ###
    
    function _RotateFile () {
        # check size of FILE
        if [ -f "$1" -a "$(stat --printf="%s" $1)" -gt "$_maxlogsize" ]; then
            if [ "$_logrotate" == 1 ]; then
                echo "$(basename $0 .sh): rotating file $1"
                logger "$(basename $0 .sh): rotating file $1"
                mv -f $1 ${1}.1 >/dev/null 2>&1
            else
                echo "$(basename $0 .sh): resetting file $1"
                logger "$(basename $0 .sh): resetting file $1"
                rm -f $1 >/dev/null 2>&1
            fi
            touch $1
        fi
    }
    
    function _LogIt () {
        _RotateFile $LOGFILE
        echo "[$(date +"%d/%m/%Y %H:%M:%S")] $1" >> $LOGFILE
    }
    
    # ping test
    $PING -c $PING_COUNT $IP_FOR_TEST > /dev/null 2> /dev/null
    if [ $? -ge 1 ]; then
        _LogIt "$INTERFACE is down"
        if [ "$SaveFFLAG" == 1 ]; then
            [ ! -d /opt/check_lan ] && mkdir -p /opt/check_lan
            _RotateFile $FFLAG
            date >> $FFLAG
            echo 08 > /sys/devices/platform/bcm2708_usb/regoffset
            cat /sys/devices/platform/bcm2708_usb/regvalue >> $FFLAG
            echo 0x31 > /sys/devices/platform/bcm2708_usb/regvalue
            cat /sys/devices/platform/bcm2708_usb/regvalue >> $FFLAG
        fi
        _LogIt "USB Treiber entladen.."
        modprobe -r ehci_hcd
        sleep 2
        _LogIt "USB Treiber laden.."
        modprobe ehci_hcd
    else
        [ "$LOGup" == 1 ] && _LogIt "$INTERFACE is up"
        #rm -f $FFLAG 2>/dev/null
        dummy=1
    fi
    #---------------------------------------------------------------
    • SaveFFLAG=0 -> 0/1 --> wenn das auf 1 gestellt wird, wird das FFLAG wie im original script geschrieben, auf 0 eben nicht..
    • LOGup=0 -> 0/1 --> wenn das auf 1 gestellt wird, wird auch "eth0 is up" ins log geschrieben, ansonsten eben nur wenn eth0 down ist..
    • LOGFILE="/var/log/$(basename $0 .sh).log" --> das logfile in dem up/down protokoliert werden soll. $(basename $0 .sh) dient dazu den namen des scripts als logfile-namen zu verwenden..
    • _maxlogsize="2048" --> wie gross LOGFILE maximal werden darf bevor es:
    • _logrotate=1 -> 0/1 --> wenn das auf 1 gestellt wird, wird das logfile beim erreichen der maxlogsize rotiert, also das alte file mit dateiendung .1 umbenannt. auf 0 wird es gelöscht (gilt auch fürs FFLAG file)
     
    Zuletzt von einem Moderator bearbeitet: 24. Dezember 2012
    #1
  2. phantom

    Nervigen User Advertisement

  3. Kermit
    Offline

    Kermit Guest

    AW: Script zur Überprüfung der Netzwerkkonektivität

    Hi,

    hab das Script mal aus diesem Thread

    Dieser Link ist nur für Mitglieder!!! Jetzt kostenlos Registrieren ?

    heraus kopiert, da doch immer wieder Fragen danach aufkommen.

    Grüße

    Kermit
     
    #2
  4. chrisbi
    Offline

    chrisbi Hacker

    Registriert:
    29. Januar 2008
    Beiträge:
    326
    Zustimmungen:
    195
    Punkte für Erfolge:
    43
    AW: Script zur Überprüfung der Netzwerkkonektivität

    Das ganze dann noch einfügen unter cronjob mit:
    Code:
    nano /var/spool/cron/crontabs/root
    Code:
    * * * * * /etc/init.d/check-eth0.sh      # Einmal pro Minute eth0 Prüfen
    und cron neu starten mit:
    Code:
    /etc/init.d/cron restart
     
    Zuletzt bearbeitet: 21. Dezember 2012
    #3
    laila-no1 und (gelöschter Benutzer) gefällt das.
  5. Kermit
    Offline

    Kermit Guest

    AW: Script zur Überprüfung der Netzwerkkonektivität

    Hi,

    oder man fügt es hinzu per
    Code:
    crontab -e
    
    der Eintrag lautet dann
    Code:
    */1 * * * * /etc/init.d/check-eth0.sh
    
    und es wird automatisch übrenommen ohne einen Dienst neu starten zu müssen.

    Grüße

    Kermit

    Edit:
    Auf Grund eines freundlichen Hinweises von @aragorn eine kurze Erklärung bzgl des Eintrags in der crontab.
    Bei mir läuft das Script nicht jede Minute sondern nur alle 5 Minuten. Deswegen habe ich bei mir
    Code:
    */5 * * * * /etc/init.d/check-eth0.sh
    
    eingetragen. Da hier immer von einem Start des Scripts jede Minute gesprochen wird habe ich meinen Eintrag entsprechend angepasst.
    Wer das Script jede Minute lassen möchte kann die Zeile auch so eintragen
    Code:
    * * * * * /etc/init.d/check-eth0.sh
    
    thx @aragorn für den Hinweis
     
    Zuletzt von einem Moderator bearbeitet: 21. Dezember 2012
    #4
  6. elcoro
    Offline

    elcoro Moderator Digital Eliteboard Team

    Registriert:
    1. Juli 2011
    Beiträge:
    1.628
    Zustimmungen:
    638
    Punkte für Erfolge:
    113
    Beruf:
    Storehouse
    Ort:
    nel Mondo
    AW: Script zur Überprüfung der Netzwerkkonektivität

    Hallo,
    da ich neu bin mit den PI, und ich weis nicht wo diese script im welches ordner rein komm
    wie gesagt bin neu mit der materie und PI.
     
    #5
  7. Kermit
    Offline

    Kermit Guest

    AW: Script zur Überprüfung der Netzwerkkonektivität

    Hallo elcoro,

    wenn du dir den Eintrag den du in crontab anlegen sollst anschaust, so kannst du sehen, dass das Script ins Verzeichnis /etc/init.d/ kommt. Die Rechte solltest du auch noch passend auf 755 stellen.

    Grüße

    Kermit
     
    #6
  8. aragorn
    Offline

    aragorn Guest

    AW: Script zur Überprüfung der Netzwerkkonektivität

    wo es letzlich liegt ist nebensächlich, in /etc/init.d/ ist es genau genommen eigentlich auch falsch da es kein INIT script ist sondern über crontab ausgeführt wird..
    man kann es also auch im homedir von root ( /root/ ) ablegen oder in /bin/ oder in /usr/local/bin/ oder wo auch immer - hauptsache kein flüchtiges tmpfs verzeichnis
     
    #7
  9. boxi360
    Offline

    boxi360 Ist oft hier

    Registriert:
    20. Oktober 2011
    Beiträge:
    108
    Zustimmungen:
    9
    Punkte für Erfolge:
    18
    AW: Script zur Überprüfung der Netzwerkkonektivität

    Braucht man den script noch über haupt , wurde die Problematik nicht bereits behoben?

    Von CM10 getapaltk :)
     
    #8
  10. chrisbi
    Offline

    chrisbi Hacker

    Registriert:
    29. Januar 2008
    Beiträge:
    326
    Zustimmungen:
    195
    Punkte für Erfolge:
    43
    AW: Script zur Überprüfung der Netzwerkkonektivität

    Ich würde sagen, er schadet nicht :)

    Gesendet von meinem GT-I9000 mit Tapatalk 2
     
    #9
  11. 0815flieger
    Offline

    0815flieger Freak

    Registriert:
    14. November 2012
    Beiträge:
    217
    Zustimmungen:
    100
    Punkte für Erfolge:
    43
    Ort:
    Norddeutschland
    AW: Script zur Überprüfung der Netzwerkkonektivität

    Script benötigt man nicht mehr unbedingt. Hab meinen PI seit Mittwoch mit neuem Firmewareupdate versehen und nun läuft er ohne Ruckler und vor allen Dinge ohne dass er das Netzerk verliert.
    Einzig auf den Managerreiter im WebIF von IPC darf man nicht klicken. Dann schmiert das Teil ab, sodass man nur den Netzstecker ziehen kann.
    Aber wenn mans weiß...klickt man eben nicht drauf.
    Ansonsten läuft er sehr stabil...keine Aussetzer, keine Ruckler , nix mehr...einfach super.

    Gruß vom Flieger
     
    #10
  12. fidel71
    Offline

    fidel71 Ist gelegentlich hier

    Registriert:
    3. Mai 2009
    Beiträge:
    75
    Zustimmungen:
    13
    Punkte für Erfolge:
    0
    AW: Script zur Überprüfung der Netzwerkkonektivität

    nö, selbst da läuft es einwandfrei...
     
    Zuletzt von einem Moderator bearbeitet: 3. Februar 2013
    #11
  13. boxi360
    Offline

    boxi360 Ist oft hier

    Registriert:
    20. Oktober 2011
    Beiträge:
    108
    Zustimmungen:
    9
    Punkte für Erfolge:
    18
    AW: Script zur Überprüfung der Netzwerkkonektivität

    Ok schön so was zu hören :) mal andere Frage hat nicht jemand zufällig das Skript oscam-ui.SH in 3.2 Version (PHP userverwaltung) von freedchen parat ? In IPC ist die 3.1 vorhanden aber nicht die 3.2 und der normale download funktioniert nicht mehr

    Von CM10 getapaltk :)
     
    #12
  14. sectorchan
    Offline

    sectorchan Hacker

    Registriert:
    18. Mai 2012
    Beiträge:
    392
    Zustimmungen:
    22
    Punkte für Erfolge:
    18
    AW: Script zur Überprüfung der Netzwerkkonektivität

    Hiho,

    welches Update meint ihr eigentlich?

    Ich habe mein Raspi vor 2 Wochen bekommen und das wheezy image von der Raspi Hp Runtergeladen und mein Raspi verliert oft die Verbindung die er danach gar nichtr mehr selbstständig aufbauen kann/tut.
    Bei dem Firmware sollte dich eigentlich das problem schon behoben worden sein wenn ihr bereits im Febriuar das Update gemacht habts und danach war es nicht mehr vorhanden.
     
    #13

Diese Seite empfehlen