ifconfig - Kollisionen und RX/TX Rate anzeigen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von d4n13l, 21.01.2005.

  1. d4n13l

    d4n13l ehm...ja...

    Dabei seit:
    21.01.2005
    Beiträge:
    14
    Zustimmungen:
    0
    Hi,

    also mein anliegen is folgendes...

    ich will mit ipconfig ein tool schreiben, das mir die anzahl der kollisionen und die anzahl der übertragenen pakete anzeigt.

    Anzahl der Kollsionen, TX Rate und RX Rate sollten dabei in variablen gepackt werden...

    aber wie bekomm ich das hin?

    beim ausführen von "ipconfig eth0" wird das ja alles ausgegeben, aber wie kann ich dafür sorgen, das auch nur das anzeigt wird, was ich will und dann auch noch in variablen geschrieben wird?

    hoffe ihr könnt mir schnellmöglicht helfen, is echt wichtig...

    dank im voraus
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. codc

    codc /dev/null

    Dabei seit:
    12.01.2004
    Beiträge:
    607
    Zustimmungen:
    0
    Das einzige was mit da einfällt ist eine kombination aus ifconfig, grep, awk und sed die daten da rauszupulen. Bin aber mit awk und sed nicht so fit dass ich da so auf die schnelle etwas schreiben kann.

    Für eine Firewall hab ich so etwas schon mal gesehen:
    IF_INET_IP="`ifconfig $IF_INET | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"

    holt aus ifconfig die dhcp-zugewiesene ip musst du vielleicht anpassen
     
  4. d4n13l

    d4n13l ehm...ja...

    Dabei seit:
    21.01.2005
    Beiträge:
    14
    Zustimmungen:
    0
    hm auf jedenfall schonmal danke!

    wäre aber schon gut wenn man es mit awk realisieren könnte...oder ist das garnicht möglich?

    greetz
    d4n13l
     
  5. d4n13l

    d4n13l ehm...ja...

    Dabei seit:
    21.01.2005
    Beiträge:
    14
    Zustimmungen:
    0
    hm also ka aber oben der befehl klappt bei mir jedenfalls nich, oder ich führ den einfach falsch aus... :think:

    hat denn sonst niemand ne ahnung? :hilfe2: :hilfe2:

    is wirklich wichtig...


    greetz

    d4n13l
     
  6. tr0nix

    tr0nix der-mit-dem-tux-tanzt

    Dabei seit:
    11.07.2003
    Beiträge:
    1.585
    Zustimmungen:
    0
    Ort:
    Schweiz, Opfikon/Glattbrugg
    Doch ist mit AWK auch möglich. Jedoch komm ich gerade nicht dazu.

    Hast du den Befehl unter root ausgeführt? Manche Informationen kriegt man nur als root raus (jedenfalls bei Solaris -> nur als root sieht man die MAC Addi).
     
  7. codc

    codc /dev/null

    Dabei seit:
    12.01.2004
    Beiträge:
    607
    Zustimmungen:
    0
    Bei mir tut es das auch nicht sofort aber nach 10 Min hatte ich es dann.
    Ohne wirklich der Skript-Guru zu sein. Man muss es halt an sein System anpassen. Und wenn ein Script es wirklich nicht tut dann mal auf fehlersuche gehen und nicht davon ausgehen das der Autor ein funktionsuntüchtiges Script abliefert.

    Alles weitere wegen TX usw wirst wohl selber hinbekommen.

    Kleiner Tip selber denken hilft. Hier wird dir keiner die zeigen wie man Scripte schreibt.
     
  8. #7 TenBaseT, 22.01.2005
    TenBaseT

    TenBaseT Foren As

    Dabei seit:
    07.11.2004
    Beiträge:
    99
    Zustimmungen:
    0
    Anfangs war hier mal ne awk Lösung angedacht. Da fühle ich mich ja direkt berufen. Also mache ich mich frisch ans Werk und schwupps die wupp, bin ich mal wieder auf die Sch....... gefallen. :think:

    Das Script läuft soweit. Die Zuweisung in A ist noch OK. A ist ein Array. Wenn ich jetzt die entsprechenden Arrays auseinander dividieren will, dann bekomme ich Stress.
    Code:
        split(A[1],B,":")
        printf("%-15s %12d\n", "Kollosionen", B[1])
    A[1] hat den Wert "RX_bytes:27248125". Ich hätte erwartet, dass nach dem split() B[1] die Anzahl der RX_bytes enthält. Ich sehe aber immer nur 0. Warum?

    Vielleicht kann mir ja mal jemand auf die Sprünge helfen. Das Script heisst bei mir ifconfig.awk (sollte aber auch jeder andere Name eingesetzt werden können). Aufgerufen wird es mit [root@rosi my]# ifconfig eth1|awk -f ifconfig.awk

    Und hier noch das ganze Script. (Warum darf man hier kein .awk attachen?)
    Code:
    // { setVariables() }
    
    
    function setVariables() {
      S = $0
      sub("RX bytes", "RX_bytes", S)
      sub("TX bytes", "TX_bytes", S)
    
      if (match(S, "Kollisionen") > 0) {
        split(S,A)
        print A[1]
        split(A[1],B,":")
        printf("%-15s %12d\n", "Kollosionen", B[1])
        print B[1]
        print B[3]
      }
      
      if (match(S, "RX_bytes") > 0) {
        split(S, A)
        print A[1]
        split(A[1],B,":")
        printf("%-15s %12d\n", "RX Bytes", strtonum(B[1]))
    
        split(A[4],B,":")
        printf("%-15s %12d\n", "TX Bytes", strtonum(B[1]))
      }
    }
    Hans
     
  9. #8 TenBaseT, 22.01.2005
    TenBaseT

    TenBaseT Foren As

    Dabei seit:
    07.11.2004
    Beiträge:
    99
    Zustimmungen:
    0
    Aua, sehe vor lauter Bäumen den Wald nicht mehr.

    Das Script sucht die gewünschten Werte raus. Der Rest sollte ja jetzt wohl nur noch Formsache sein. Hier das ganze Script
    Code:
    // { setVariables() }
    
    
    function setVariables() {
      S = $0
      sub("RX bytes", "RX_bytes", S)
      sub("TX bytes", "TX_bytes", S)
    
      if (match(S, "Kollisionen") > 0) {
        split(S,A)
        #Collisions
        split(A[1],B,":")
        printf("%-15s %12d\n", B[1], B[2])
      }
      
      if (match(S, "RX_bytes") > 0) {
        split(S, A)
        #RX_Bytes
        split(A[1],B,":")
        printf("%-15s %12d\n", B[1], strtonum(B[2]))
    
        #TX_Bytes
        split(A[4],B,":")
        printf("%-15s %12d\n", B[1], strtonum(B[2]))
      }
    }
    Und so wird es angewendet
    Code:
    [root@rosi my]# ifconfig eth1|awk -f ifconfig.awk
    Kollisionen                0
    RX_bytes            27353257
    TX_bytes             2563416
    [root@rosi my]# 
    Hans
     
  10. #9 avaurus, 22.01.2005
    avaurus

    avaurus °°°°°°°°°°°°°

    Dabei seit:
    28.12.2003
    Beiträge:
    965
    Zustimmungen:
    0
    macht euch das Leben nicht so schwer:

    Datei: if.sh
    Code:
    #!/usr/bin/bash
    /sbin/ifconfig $1 | sed 's/:/ /g' | grep 'collisions' | awk '{print("Kollisionen: "$2)}'
    /sbin/ifconfig $1 | sed 's/:/ /g' | grep 'RX bytes' | awk '{print("RX bytes: "$3"\nTX bytes: "$8)}'
    
    Aufzurufen mit
    Code:
    ./if.sh eth0
    Mfg.
     
  11. #10 TenBaseT, 22.01.2005
    TenBaseT

    TenBaseT Foren As

    Dabei seit:
    07.11.2004
    Beiträge:
    99
    Zustimmungen:
    0
    viele Wege führen nach Rom ...........

    Hans
     
  12. #11 avaurus, 22.01.2005
    avaurus

    avaurus °°°°°°°°°°°°°

    Dabei seit:
    28.12.2003
    Beiträge:
    965
    Zustimmungen:
    0
    ganz genau :).
     
  13. d4n13l

    d4n13l ehm...ja...

    Dabei seit:
    21.01.2005
    Beiträge:
    14
    Zustimmungen:
    0
    okay vielen danke an euch alle!

    @codc

    sry aber bin noch neu hier im forum und auch noch etwas neu in der linuxwelt ;)
    aber werd mich besser :)

    also danke nochmal ;)

    bye
     
  14. #13 TenBaseT, 23.01.2005
    TenBaseT

    TenBaseT Foren As

    Dabei seit:
    07.11.2004
    Beiträge:
    99
    Zustimmungen:
    0
    noch mals zum Thema viele Wege führen nach ............

    Hätte man die Informationen nicht auch "leicher" aus /proc/net/??? generieren können?

    Hans
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 avaurus, 23.01.2005
    avaurus

    avaurus °°°°°°°°°°°°°

    Dabei seit:
    28.12.2003
    Beiträge:
    965
    Zustimmungen:
    0
    ist nicht einfacher als die Ausgabe von ifconfig zu parsen.
     
  17. codc

    codc /dev/null

    Dabei seit:
    12.01.2004
    Beiträge:
    607
    Zustimmungen:
    0
    Der Hinweis war nicht böse gemeint aber es ist so wenn jemand hier regelmässig durch das verweigern des eigenen denkens auffällt wird er jedenfalls von mir und ich denke auch von einer reihe anderer leute ignoriert. D.h. man schiesst sich selber ins Knie. Imho hat so ein Forum wie auch GPL was von nehmen und geben.

    Jeder der hier anderen hilft hat eine ganze Weile seines Lebens damit zugebracht sich dieses Wissen an zueignen. Sollte man nie vergessen und diese Leute geben hier ihr wissen weiter ohne etwas davon zu haben ausser evtl. ein paar ASCII-Zeilen als danke schön wenn es hoch kommt.

    Nix für ungut aber allles nur als Hinweis für die Zukunft.
     
Thema:

ifconfig - Kollisionen und RX/TX Rate anzeigen

Die Seite wird geladen...

ifconfig - Kollisionen und RX/TX Rate anzeigen - Ähnliche Themen

  1. sed ifconfig ipv4 adresse filtern

    sed ifconfig ipv4 adresse filtern: Hallo, ich wollte gerne mit Hilfe von sed meine IPv4-Adresse auf dem eth0-Device aus der Ausgabe von ifconfig filtern lassen. (Ich weiss, das...
  2. kein /dev/eth0 vorhanden aber ifconfig zeigt es an?

    kein /dev/eth0 vorhanden aber ifconfig zeigt es an?: Morgen zusammen, ich hab hier unter openSuse 10.2 ein komisches Phänomen: ls -al /dev/e* ls: cannot access /dev/e*: No such file or...
  3. Kein eth0 in ifconfig - nur "lo"

    Kein eth0 in ifconfig - nur "lo": Habe mit Knoppix eine funktionierende Internet Verbindung über LAN (eth0), wollte nun DamnSmallLinux 3.1 RC1 ausprobieren und habe festgestellt...
  4. Falsche(?) Ausgabe von 'ifconfig'

    Falsche(?) Ausgabe von 'ifconfig': Hallo zusammen Ich habe ein Problem, das mich ein Bisschen verwirrt. Ich bin Netzwerktechnisch nicht sehr sattelfest, darum habe ich keine...
  5. Bytezähler von ifconfig zurücksetzen

    Bytezähler von ifconfig zurücksetzen: Hallo, gibt es eine Möglichkeit, den Bytezähler der Ausgabe von beispielsweise /sbin/ifconfig eth0 auf Null zurück zu setzen? Hier seht ihr,...