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
    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
    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
    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
    Aufruf: raspiNetInfo.sh [-e | -s SSID | -h | -m | -g | -l LANGUAGE]
    Parameter:
    -e : Nur Kabelverbindung testen
    -h : help
    -m : Fehlende Netzwerkpakete ignorieren
    -s : WLAN und Kabelverbindung testen
    -g : Meldungen in Englisch
    -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
    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
    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
    ip a s 
    ip r s
    ip n s
    ( egrep -v "^(#|$)" | grep -i "nameserver" ) < /etc/resolv.conf 
    egrep -v "^(#|$)|::" /etc/network/interfaces 
    egrep -v "^(#|$)|::" cat /etc/hosts


    Bei WLAN Netzwerkproblemen sind weiterhin folgende Ausgaben hilfreich:

    Code
    lsusb | grep -v "root hub" | grep -i "wire"
    iwconfig
    iwlist wlan0 scanning | egrep -i "(chan|signal)"
    sudo cat /etc/wpa_supplicant/wpa_supplicant.conf  ### ACHTUNG: WLAN Schlüssel und WLAN SSID maskieren !!!
    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

    Zitat von &quot;Communityhelfer Anton&quot;

    Liefere mal den Ausgabe von Befehl1


    dann die Naechste

    Zitat von &quot;Communityhelferin Berta&quot;

    liefere mal den Ausgabe von Befehl2


    dann der Naechste

    Zitat von &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:

    Spoiler anzeigen

    bash raspiNetInfo.sh -s DasIstmeineSSID
    raspiNetInfo.sh V0.2.8, 2015-12-18/19:02:12 - f62646d
    --- RNI010I: Starte Datensammlung und Netzwerkuntersuchung. Das kann u.U. ein paar Minuten dauern ...
    --- RNI012I: Ping von 8.8.8.8 erfolgreich
    --- RNI012I: Ping von http://www.google.com erfolgreich
    --- uname -a
    Linux raspberrypi 3.10.25+ #616 PREEMPT Mon Dec 23 18:13:02 GMT 2013 armv6l GNU/Linux
    --- [ -d /home/pi/.xbmc ]
    no
    --- ip a s | egrep "(eth|wlan)
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether @@:@@:@@:@@:@@ brd @@:@@:@@:@@:@@
    inet 192.168.0.12/24 brd 192.168.0.255 scope global eth0
    valid_lft forever preferred_lft forever
    valid_lft forever preferred_lft forever
    3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether @@:@@:@@:@@:@@ brd @@:@@:@@:@@:@@
    inet 192.168.0.118/24 brd 192.168.0.255 scope global wlan0
    valid_lft forever preferred_lft forever
    valid_lft forever preferred_lft forever
    --- cat /etc/resolv | grep -i "nameserver"
    nameserver 192.168.0.1
    --- cat /etc/network/interfaces
    auto lo
    iface lo inet loopback
    iface eth0 inet static
    address 192.168.0.12
    netmask 255.255.255.0
    broadcast 192.168.0.255
    gateway 192.168.0.1
    dns-nameservers 192.168.0.1
    allow-hotplug wlan0
    iface wlan0 inet manual
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
    iface default inet dhcp
    --- cat /etc/hosts
    127.0.0.1 localhost raspberrypi
    --- ip r s | egrep "(eth|wlan)"
    default via 192.168.0.1 dev eth0
    192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.12
    192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.118
    --- ip n s
    192.168.0.113 dev eth0 lladdr ec:55:f9:c6:64:6c REACHABLE
    192.168.0.1 dev wlan0 lladdr 24:65:11:5c:01:a4 STALE
    192.168.0.6 dev eth0 lladdr 44:8a:5b:2b:e2:e4 STALE
    192.168.0.1 dev eth0 lladdr 24:65:11:5c:01:a4 REACHABLE
    192.168.0.10 dev eth0 lladdr b8:27:eb:3c:94:90 STALE
    192.168.0.113 dev wlan0 lladdr ec:55:f9:c6:64:6c STALE
    --- lsusb | grep -v "root hub" | grep -i "wire"
    Bus 001 Device 006: ID 0846:9030 NetGear, Inc. WNA1100 Wireless-N 150 [Atheros AR9271]
    --- iwconfig (eth und wlan)
    wlan0 IEEE 802.11bgn ESSID:"@@@@@@@@"
    Mode:Managed Frequency:2.462 GHz Access Point: @@:@@:@@:@@:@@
    Link Quality=37/70 Signal level=-73 dBm
    Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
    Tx excessive retries:0 Invalid misc:478 Missed beacon:0
    --- /etc/wpa_supplicant/wpa_supplicant.conf
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1
    network={
    ssid="@@@@@@@@"
    psk="@@@@@@@@"
    proto=RSN
    key_mgmt=WPA-PSK
    pairwise=CCMP
    auth_alg=OPEN
    }
    --- grep wpa_action /var/log/messages | tail -n 15
    --- RNI016I: Vor dem Publizieren von der Logdatei raspiNetInfo.log immer kontrollieren, dass keine sensitiven Daten enthalten sind

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

  • 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 :)

  • 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
    bash raspiNetInfo.sh -e

    folgt

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

    Also mache ich:

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

    Dann lauten die letzten Zeilen:

    Code
    ...
    Reading package lists... Done
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    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.

  • 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
    --- RNI020I: 'sudo apt-get update; sudo apt-get install dig' will install the
    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
    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.

    Spoiler anzeigen
  • 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:

  • 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
    Heimnetz / Netzwerk
    Aktive Verbindungen
     rpiw 192.168.178.30 80:1F:xx:xx:xx:xx WLAN 39 Mbit/s
    Ungenutzte Verbindungen
     rpi1 192.168.178.32 B8:27:EB:xx:xx:xx LAN 3
    Code
    WLAN / Funknetz
    
    
    Bekannte WLAN-Geräte
     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.

  • 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 (http://www.linux-tips-and-tricks.de)«... 78.46.156.195

    Verbindungsaufbau zu http://www.linux-tips-and-tricks.de (https://forum-raspberrypi.de... 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 http://www.linux-tips-and-tricks.de (https://forum-raspberrypi.de... 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
    sudo apt-get update
    sudo apt-get install ca-certificates
    sudo update-ca-certificates

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


  • 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.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!