Bash Skript für Netzwerk-Monitoring

  • Moin in die Runde,


    ich beiße mir derzeit die Zähne an einem kleinen Bash Snippet aus. Ich möchte gerne die Daten unter /proc/net/dev via Bash Skript auslesen und Dinge wie Kb/s oder auch p/s berechnen.


    Ich möchte dabei auf keine zusätzlichen Tools zurückgreifen - lediglich Systemeigene Tools sollen genutzt werden.


    Abgreifen tue ich die Daten mit:

    Code
    interfaces="$(awk '/:/ {print $1","$2","$3","$10","$11";"}' /proc/net/dev | tr -d ':' | tr -d '\n')"
    sleep 10
    interfaces_last="$(awk '/:/ {print $1","$2","$3","$10","$11";"}' /proc/net/dev | tr -d ':' | tr -d '\n')"

    Um jetzt z.B. den Durchschnittswert pro Sekunde im Download zu berechnen muss ich ja $2 (interfaces_last) - $2 (interfaces) / 10 rechnen. Gleiches auch bei anderen Werten.


    Wenn ich lediglich nur das default Interface berechnen möchte, so stellt dies kein Problem dar.


    Allerdings möchte ich gerne die Daten von jedem Interface haben - und da wird es kompliziert da die Anzahl der Interface ja schwanken kann und ich nicht für jede Eventualität ein eigenes "if" schreiben möchte. Ich muss das Ganze also in eine Schleife packen, wobei die Berechnungen stattfinden, um das Ergebnis zu bekommen.


    Doch leider fehlt mir hier aktuell etwas der Durchblick wie ich das anstellen kann.


    Das Ergebnis stelle ich mir wie folgt vor:

    Code
    interfacename,traffic_gesamt,upload_durchschnitt,download_durchschnitt,pakete_upload_durchschnitt,pakete_download_durchschnitt;interface2,...


    Wenn hier jemand eine gute Idee hat oder ein systemeigenes Tool kennt wäre ich sehr Dankbar.

  • Hallo,


    hier ein bash script, dass die Datenrate aus /proc/net/dev errechnet, den Output mußt du an deine Anforderungen anpassen.


  • Vielen Dank für deine schnelle Antwort und entschuldige für meine späte Rückmeldung.


    Ich habe nun selbst eine gute Lösung dafür gefunden. Schreibstile sind ja bekanntlich unterschiedlich - auf deinen wäre ich aber nie im leben gekommen.


    Ich finde das aber trotzdem sehr interessant wie andere Coder Probleme angehen, vielen Dank dafür.