Hilfreiches Script bei Netzwerkproblemen

  • Ein grosser Teil der Postings in diesem Forum dreht sich um Netzwerkprobleme und da sind sehr detailierte Informationen zum Netzwerk wichtig. Sie helfen Dein Netzwerkproblem schneller zu identifizieren und zu beheben. Diese kann man hier im Forum recht einfach bereitstellen, wenn man ein kleines Script runterlädt, auf der Pi ausführt und den Inhalt von raspiNetInfo.log hier im Forum zusätzlich zur Problembeschreibung postet. Zusätzlich testet das Script auch auf typische Nerkwerkkonfigurationsfehler und schreibt entsprechende Fehlermeldungen, so dass man u.U. den Fehler auch selbst beheben kann. Natürlich kann man die Befehle die das Script ausführt auch manuell eingeben und die Ergebnisse im Forum posten. Sensitive Information werden automatisch maskiert (WLAN Key, SSID, ...). Man sollte aber trotzdem noch mal vor dem Veröffentlichen ob nicht doch noch irgendwelche sensitive Informationen enthalten sind.


    Bereitstellung des Scripts auf der Pi
    1) Falls ein WLAN Problem existiert und die Pi eine Kabelnetzwerkverbindung hat als Benutzer pi an der Pi anmelden per ssh oder direkt an der Konsole. Dann

    Code
    1. wget -O raspiNetInfo.sh http://www.linux-tips-and-tricks.de/raspiNetInfo.sh


    2) Falls die Pi keine Netzwerkverbindung hat muss das Script von hier auf einen Rechner mit einer funktionierenden Netzwerkverbindung mit einem Browser runtergeladen und auf die SD Karte in /home/pi, /root oder /tmp kopiert werden. In diesem Falle sollte der Parameter -m beim Aufruf benutzt werden da ein paar fehlende Pakete zur Analyse dann nicht aus dem Netz installiert werden können.


    Aufruf

    Code
    1. bash raspiNetInfo.sh -s 'MeineSSID'


    um z.B. WLAN Netzwerkprobleme analysieren zu lassen und im Bedarfsfall den Inhalt von raspiNetInfo.log im Forum zu posten.

    Code
    1. bash raspiNetInfo.sh -e


    um z.B. Kabel Netzwerkprobleme analysieren zu lassen und im Bedarfsfall den Inhalt von raspiNetInfo.log im Forum zu posten.


    Aufrufsyntax

    Code
    1. Aufruf: raspiNetInfo.sh [-e | -s SSID | -h | -m | -g | -l LANGUAGE]
    2. Parameter:
    3. -e : Nur Kabelverbindung testen
    4. -h : help
    5. -m : Fehlende Netzwerkpakete ignorieren
    6. -s : WLAN und Kabelverbindung testen
    7. -g : Meldungen in Englisch
    8. -l : Meldungen in der gewählten Sprache schreiben (de oder en)


    d.h. bei -s muss man noch die SSID (um Sonderzeichen der bash zu ignorieren die SSID in Tüdelchen ' eingeben, also -s 'meineSSID' ) zu der man verbinden will mitgeben, da diese für bestimmte Tests und natürlich um sie später in den Ausgaben zu maskieren, notwendig ist. Am Ende existiert eine Datei mit dem Namen raspiNetInfo.log, die die Untersuchungsergebnisse, die den Bildschirmausgaben entsprechen, enthalten. Das Script benutzt ein paar Programme, die nicht standardmässig installiert sind und nachinstalliert werden müssen. Sollte die Pi aber auch keine funktionierende Kabelverbindung haben können die fehlenden Pakete nicht nachinstalliert werden. Dann muss man mit dem Parameter -m erzwingen, dass sich das Script nicht bei fehlenden Programmen beendet. Allerdings wird dadurch die Analyse- und Datensammelfähigkeit signifikant eingeschränkt.


    Welche Befehle werden ausgeführt?


    Die folgenden Befehle werden ausgeführt um Netzwerkinformationen zu sammeln und können auch alternativ dirket ausgeführt werden um Netzwerkinformationen in einer Datei zu sammeln und im Forum als Basis zur Problemanalyse zu posten. Allerdings werden keine sensitiven Daten (WLAN SSID, IP Adressen, MAC Adressen, Schlüssel usw) automatisch maskiert wie es raspiNetInfo.sh macht und dieses muss deshalb manuell vorgenommen werden.


    Am besten sammelt man alle Ausgaben wie folgt in einer Datei network.info. Eingabe von

    Code
    1. script network.info

    auf der Konsole. Danach gibt man alle weiter unten gelisteten Befehle der Reihe nach ein und zum Schluss beendet man alles durch Eingabe von

    Code
    1. exit

    Nun existiert die Datei netzwerk.info die man noch manuell nach sensitiven Informationen mit einem Editor durchgehen muss und postet die Informationen aus der Datei dann im Forum:

    Code
    1. ip a s
    2. ip r s
    3. ip n s
    4. ( egrep -v "^(#|$)" | grep -i "nameserver" ) < /etc/resolv.conf
    5. egrep -v "^(#|$)|::" /etc/network/interfaces
    6. egrep -v "^(#|$)|::" cat /etc/hosts


    Bei WLAN Netzwerkproblemen sind weiterhin folgende Ausgaben hilfreich:

    Code
    1. lsusb | grep -v "root hub" | grep -i "wire"
    2. iwconfig
    3. iwlist wlan0 scanning | egrep -i "(chan|signal)"
    4. sudo cat /etc/wpa_supplicant/wpa_supplicant.conf  ### ACHTUNG: WLAN Schlüssel und WLAN SSID maskieren !!!
    5. sudo grep wpa_action /var/log/messages | tail -n 15



    Hintergrund


    Die Standardprozedur bei Netzwerkproblemen ist immer, dass nach dem Schildern eines Netzwerkproblemes die Community schreibt

    Quote from &quot;Communityhelfer Anton&quot;

    Liefere mal den Ausgabe von Befehl1


    dann die Naechste

    Quote from &quot;Communityhelferin Berta&quot;

    liefere mal den Ausgabe von Befehl2


    dann der Naechste

    Quote from &quot;Communityhelfer Otto&quot;

    liefere mal den Ausgabe von Befehl3


    usw


    I.d.R. sind es immer dieselben Befehle, deren Ausgabe jemand liefern soll. Auch sind es öfter Standardursachen für die Netzwerkprobleme. Was liegt näher als da ein Script zu schreiben welches bei der Netzwerkproblemlösung hilft und es dem Hilfesuchenden einfacher macht eine Lösung zu erhalten wie auch den Helfern schneller notwendige Informationen zur Fehlerbehebung an die Hand zu geben. Deshalb habe ich mal ein ein kleines Script zusammengeschrieben, welches


    1) Nach Standardnetzwerkonfigurationsproblemen sucht und sie meldet
    2) Die Befehle ausführt die am häufigsten von der Community bei Netzwerkfehleranfragen verlangt werden


    Vorteile


    1) Der Threadersteller kann das Script laufen lassen und wenn er eine Fehlermeldung zu einem Standardfehler bekommt kann er ihn vielleicht selbst lösen. Wenn nicht kann er
    2) die Ausgabe des Scripts mit den Fehlermeldungen und den weiteren Netzwerkkonfigurationsinformationen im Thread posten und liefert der Community damit gleich schon sehr viel Informationen an die Hand so dass sie zielgerichtet die Problemlösung angehen bzw weitere gezielte Befehlsausgaben nachfragen kann.


    Welche Tests auf Standardfehler werden gemacht?


    1) Ist ein Nameserver eingetragen und ist er erreichbar?
    2) Ist ein Standardgateway definiert und ist es erreichbar?
    3) Werden in der SSID nur nach IEEE 802.11 erlaubte Zeichen benutzt?
    4) Ist ein ping einer externen IP oder eines externen Hostes per Namen möglich?


    Welche Netzwerkinformationen werden gesammelt?

    1) uname -a
    2) xbmc System ja/nein
    3) ip a s
    4) ip r s
    5) ip n s
    6) /etc/resolv.conf
    7) /etc/network/interfaces
    8) /etc/hosts
    9) route -n
    10) lsusb
    11) iwconfig
    12) iwlist scan
    13) Ausgabe der letzten 15 Zeilen aus /var/log/syslog die den String wpa enthalten
    14) nm Status bei xbmc
    15) /etc/wpa_supplicant/wpa_supplicant.conf bei raspian


    Das Script ist ein bash Script welches außerdem Perl, awk und sed benutzt. Das Script führt nur Befehle aus die Informationen sammeln und es werden selbstverständlich keine Änderungen am System vorgenommen. Die Untersuchungsergebnisse werden angezeigt und finden sich parallel in der Datei raspiNetInfo.log, die dann im Forum gepostet werden können. Die SSID, die nicht lokalen IPs sowie die MACs werden in den Ausgaben maskiert.


    Weitere Vorschläge was zusätzlich an Standardfehlern zu testen ist oder auch welche weiteren Informationsausgaben sinnvoll wären nehme ich gerne auf. Entweder hier im Thread posten oder PN an mich.


    Die Ausgabe sieht dann z.B. wie folgt aus:


    raspiNetInfo.sh steht unter der GPL auf github zur allgemeinen Verfügung.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Torvalds, 28.9.2003

    >>> raspiBackup: Sichere Deine Raspberry regelmäßig im laufenden Betrieb <<<

    Edited once, last by framp ().

  • Danke für den Hinweis. Ist jetzt korrigiert.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Torvalds, 28.9.2003

    >>> raspiBackup: Sichere Deine Raspberry regelmäßig im laufenden Betrieb <<<

  • Das Script erstellt ab sofort Meldungen in der Sprache des lokalen Systems. Bislang sind das nur die Sprachen Deutsch und Englisch. Fallback ist Englisch. Wenn jemand Lust hat die ca 20 Meldungen in eine andere Sprache zu übersetzen einfach mich per PN kontaktieren.


    Wenn jemand sein System in English betreibt wie z.B. ich, kann er mit -l DE (kleines L) die Meldungen trotzdem in Deutsch erhalten.


    PS: Schwäbisch, sächsisch, kölsch oder Hamburger Platt sind allerdings keine neuen Sprachen :)

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Torvalds, 28.9.2003

    >>> raspiBackup: Sichere Deine Raspberry regelmäßig im laufenden Betrieb <<<

    Edited once, last by framp ().

  • Vielen Dank für diesen Beitrag.


    ich verwende einenRaspberry Pi mit Raspbian / Debian


    Ich habe nach Anleitung das Script geladen und ausgeführt, bekomme aber entsprechende Hinweise, etwas nach zu installieren. Leider funktioniert das aber nicht.


    Nach dem Ausführen von


    Code
    1. bash raspiNetInfo.sh -e


    folgt


    Code
    1. !!! RNI001W: Following commands are missing and reduce the value of the analysis result: dig
    2. --- RNI020I: 'sudo apt-get update; sudo apt-get install dig' will install the missing network tools if there exist a working wired network connection
    3. !!! RNI018I: Some required packages are not installed. Option -m will ignore them and run the program with reduced analysis capabilities


    Also mache ich:


    Code
    1. sudo apt-get update; sudo apt-get install dig


    Dann lauten die letzten Zeilen:


    Code
    1. ...
    2. Reading package lists... Done
    3. Reading package lists... Done
    4. Building dependency tree
    5. Reading state information... Done
    6. E: Unable to locate package dig


    Was mache ich falsch?

  • Vermutlich hast Du kein Netzwerk und willst deshalb das Script aufrufen :) . Dann kannst Du natürlich keine Pakete nachladen. Benutze einfach den Parameter -m um die erweiterten Testbefehle, die nachinstalliert werden müssen, nicht zu benutzen.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Torvalds, 28.9.2003

    >>> raspiBackup: Sichere Deine Raspberry regelmäßig im laufenden Betrieb <<<

  • Erst einmal danke für die kurzfristige Antwort.


    Da ich ein paar Tests durchführen möchte, fand ich es interessant, dieses Skript zu verwenden, um die Informationen zur Netzwerkkonfiguration anzeigen zu lassen. Das wollte ich natürlich erst zum Laufen bekommen, bevor ich an der Konfiguration rumschraube. Deshalb arbeite ich aktuell mit einer funktionierenden Netzwerkkonfiguration und stehender Internetanbindung ;).


    -m verursacht, dass dann tatsächlich eine Ausgabe erfolgt (s. u.). Das war aber nicht meine Frage, bzw. das Problem.


    Der Hinweis


    Code
    1. --- RNI020I: 'sudo apt-get update; sudo apt-get install dig' will install the
    2. missing network tools if there exist a working wired network connection


    tut nicht das, was er verspricht, nämlich die fehlenden Netzwerktools zu installieren.


    Und ja, ich habe eine Netzwerkverbindung, denn ich habe darüber ja Dein Skript geladen, und auch eine stehende SSH Verbindung zum Raspi. ;)


    Die Frage ist also, warum funktioniert


    Code
    1. sudo apt-get install dig


    nicht? Mache ich hier was falsch, oder fehlt irgendwas bei meiner Installation?


    Warum wird beim Test übrigens Ping of 173.194.69.103 durchgeführt? Das lässt sich auch von einem anderen Rechner aus nicht erreichen.


  • Im Script ist hard coded die Liste der google.com IPs. Die haben sich offensichtlich geändert. Das habe ich gefixed. Ausserdem gab es einen kleinen Bug mit der Anzeige des Pakets welches installiert werden muss wenn ein Programm fehlt :blush:. Bei dig ist es z.B. dnsutils. Der Bug ist in der aktuellen Version V0.2.6e auch gefixed.


    Merkwürdig dass diese Fehler bislang keinem aufgefallen sind :s . Besten Dank für Deinen Hinweis auf die Fehler. :danke_ATDE:

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Torvalds, 28.9.2003

    >>> raspiBackup: Sichere Deine Raspberry regelmäßig im laufenden Betrieb <<<

  • Den Test bin ich letzte Woche aus Zeitgründen schuldig geblieben: jetzt funktioniert es bestens. Nochmals herzlichen Dank für die schnelle Reaktion und Reparatur.

  • Keine schlechte Idee. Ist aber kein HTTP Host sondern ein DNS Server - aber für einen Pingtest ist das egal. Werde es ändern.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Torvalds, 28.9.2003

    >>> raspiBackup: Sichere Deine Raspberry regelmäßig im laufenden Betrieb <<<

  • Ist geändert :)

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Torvalds, 28.9.2003

    >>> raspiBackup: Sichere Deine Raspberry regelmäßig im laufenden Betrieb <<<

  • Hallo,
    mit meinem RPI / Fritzbox Aufbau habe ich Schwierigkeiten mit dem WLAN. Vllt ist es ja verursacht durch ein "scope global secondary wlan0"? Gefunden habe ich nicht hier noch im Netz hilfreiche Hinweise.


    Zur Übersicht die -- wichtigsten -- Daten:


    Auf Fritzbox (nur die wlan Angaben; lan nicht angeschlossen):

    Code
    1. Heimnetz / Netzwerk
    2. Aktive Verbindungen
    3.  rpiw 192.168.178.30 80:1F:xx:xx:xx:xx WLAN 39 Mbit/s
    4. Ungenutzte Verbindungen
    5.  rpi1 192.168.178.32 B8:27:EB:xx:xx:xx LAN 3
    Code
    1. WLAN / Funknetz
    2. Bekannte WLAN-Geräte
    3.  rpiw 192.168.178.16 80:1F:xx:xx:xx:xx 37/46 2,4 GHz /n/20 MHz WPA2


    Auf dem RPI


    Auch wenn das "secondary wlan0" nicht das Problem sein sollte, wie werde ich das los? Und woher / warum erscheint es?


    Danke im voraus für Hilfestellung(en)
    Guenter

  • Du solltest für Dein Problem einen separaten Thread erstellen damit auch andere ihn lesen, denn hier im Thread geht es nur um das Script als solches zur Netzwerkproblemlösungshilfe - nicht um irgendwelche Netzwerkproblemlösung ;)


    Vielleich macht das ja auch Mod für Dich und splittet Deinen Beitrag ab.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Torvalds, 28.9.2003

    >>> raspiBackup: Sichere Deine Raspberry regelmäßig im laufenden Betrieb <<<

  • Eben habe ich die Ausgaben mal etwas angepasst. Anstatt dem asbachuraltem ifconfig wird nun ip von den iptools2 benutzt um Netzwerkinformationen anzuzeigen. Ausserdem wird die Ausgabe von ip n s ins Log geschrieben.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Torvalds, 28.9.2003

    >>> raspiBackup: Sichere Deine Raspberry regelmäßig im laufenden Betrieb <<<

  • Eben habe ich raspiNetInfo.sh unter der GPL published. Wer will kann also ab sofort das Script nach belieben verändern und erweitern. Es steht hier auf github zur allgemeinen Verfügung.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Torvalds, 28.9.2003

    >>> raspiBackup: Sichere Deine Raspberry regelmäßig im laufenden Betrieb <<<

  • folgende Meldung erhalte ich, wenn ich den Befehl wget -O raspiNetInfo.sh http://www.linux-tips-and-tricks.de/raspiNetInfo.sh
    in der Konsole auf meinem RPI starte:



    pi@raspberrypi ~ $ sudo wget -O raspiNetInfo.sh http://www.linux-tips-and-tricks.de/raspiNetInfo.sh


    --2015-06-04 18:55:30-- http://www.linux-tips-and-tricks.de/raspiNetInfo.sh


    Auflösen des Hostnamen »http://www.linux-tips-and-tricks.de (www.linux-tips-and-tricks.de)«... 78.46.156.195


    Verbindungsaufbau zu www.linux-tips-and-tricks.de (www.linux-tips-and-tricks.de)|78.46.156.195|:80... verbunden.


    HTTP-Anforderung gesendet, warte auf Antwort... 301 Moved Permanently


    Platz: https://www.linux-tips-and-tricks.de/raspiNetInfo.sh[folge]


    --2015-06-04 18:55:30-- https://www.linux-tips-and-tricks.de/raspiNetInfo.sh


    Verbindungsaufbau zu www.linux-tips-and-tricks.de (www.linux-tips-and-tricks.de)|78.46.156.195|:443... verbunden.


    FEHLER: Dem Zertifikat von »http://www.linux-tips-and-tricks.de« wird nicht vertraut.


    [font="Source Sans Pro"]Das ausgestellte Zertifikat ist noch nicht aktiviert.[/font]


    [font="Times New Roman"]Was mache ich falsch ?[/font]
    [font="Source Sans Pro"]
    [/font]


  • 1. man nutzt kein sudo für sowas
    2. installiere/update mal ca-certificates

    "Wenn du nichts zu sagen hast, sag einfach nichts!"


  • 2. installiere/update mal ca-certificates


    D.h. also folgende Befehle eingeben:

    Code
    1. sudo apt-get update
    2. sudo apt-get install ca-certificates
    3. sudo update-ca-certificates


    Allerdings wundert mich das schon, dass Du dieses Problem hast. Auf einem Raspbian Wheezy und Jessie funktioniert alles ohne Probleme.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect." Linus Torvalds, 28.9.2003

    >>> raspiBackup: Sichere Deine Raspberry regelmäßig im laufenden Betrieb <<<

    Edited once, last by framp ().


  • 1. man nutzt kein sudo für sowas
    2. installiere/update mal ca-certificates


    Ich bin leider blutiger Anfänger was RPI und Linux betrifft, bin aber gewillt das zu lernen.
    zu 1. was benutzt man dann anstelle von sudo?
    zu 2. dank der ausführlichen Befehle von framp werde ich das versuchen.