Anzeige:
Ergebnis 1 bis 9 von 9

Thema: ifconfig auswerten und das ergebnis in eine mysql schubsen

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.01.2001
    Beiträge
    242

    Question ifconfig auswerten und das ergebnis in eine mysql schubsen

    hallo,

    ich möchte die Ausgabe von ifconfig was den traffic betrifft in eine mysql db schubsen.

    ifconfig ppp0 | tail -n 2 | head -1
    RX bytes:47454509 (45.2 Mb) TX bytes:16778851 (16.0 Mb)

    ich bräuchte da die werte die in den klammern stehen, ohne das [leer]MB !??

    der tom

  2. #2
    Registrierter Benutzer
    Registriert seit
    20.11.2000
    Beiträge
    35
    ifconfig ppp0 | tail -n 2 | head -1 | perl -ne ' m/\(([0-9\.]+).*?\).*\(([0-9\.]+).*/; print "RX = $1\nTX = $2\n" '

    mfg
    Thomas
    Read Mail Really Fast with rm -r -f

  3. #3
    Registrierter Benutzer
    Registriert seit
    08.01.2001
    Beiträge
    242
    danke für die schnelle antwort.


    hab nur grad festgestellt, das es nicht wirklich clever ist den wert in den klammern
    zu nehmen, da da ja auchmal nur kb stehen können, ist ja dann besser wenn
    ich mit den bytes arbeiten würde - muss mir sie dann im php ja nur entsprechend
    zurecht rechnen.

    wie bekomme ich die raus und wie kann ich damit im shell script weiter arbeiten,
    sprich wie bekomme ich die perl variablen in die bash - über export?


    der tom

  4. #4
    Registrierter Benutzer
    Registriert seit
    04.08.2002
    Ort
    Berlin
    Beiträge
    25
    HI Thomas,

    es wäre noch ganz gut, wenn da noch eine Einheit wäre. Es ist ja ein Unterschieb, ob 2,8 MB oder 2,8 GB Traffic hast
    ifconfig ppp0 | tail -n 2 | head -1 | perl -ne ' m/\(([0-9\.]+)(.*?)\).*\(([0-9\.]+)(.*?)\).*/; print "RX = $1 $2\nTX = $3 $4\n" '
    Richtig nobel wäre das dann noch, wenn man die Werte in Byte umrechnen würde.

    by, blackm
    Geändert von blackm (18-10-2002 um 16:48 Uhr)

  5. #5
    Registrierter Benutzer
    Registriert seit
    04.08.2002
    Ort
    Berlin
    Beiträge
    25
    Oder man nimmt gleich die Werte vor den Klammern *g*...
    ifconfig ppp0 | tail -n 2 | head -1 | perl -ne ' m/.*?:([0-9]+).*?:([0-9]+)/; print "RX = $1\nTX = $2\n" '

    by, blackm

  6. #6
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Die Variablen werden hier ausgegeben und du kannst die Ausgabe abfangen
    Code:
    VAR_RX_BYTES=$(ifconfig ppp0| perl -e 'for(<>) { /RX bytes:([0-9]+).*TX bytes:([0-9]+)/; \
                              $RX+=$1; $TX+=$2;} print "$RX" ')
    
    VAR_TX_BYTES=$(ifconfig ppp0| perl -e 'for(<>) { /RX bytes:([0-9]+).*TX bytes:([0-9]+)/; \
                              $RX+=$1; $TX+=$2;} print "$TX" ')
    Geändert von fork (18-10-2002 um 20:24 Uhr)

  7. #7
    Registrierter Benutzer
    Registriert seit
    08.01.2001
    Beiträge
    242
    hi,

    habs - danke für die schnelle hilfe - hab bei der ganzen sache nochwas entdeckt:
    das script:

    ifconfig ppp0
    RX_BYTES_1=$(ifconfig ppp0| perl -e 'for(<>) { /RX bytes:([0-9]+).*TX bytes:([0-9]+)/; $RX+=$1; $TX+=$2;} print "$RX" ')
    TX_BYTES_1=$(ifconfig ppp0| perl -e 'for(<>) { /RX bytes:([0-9]+).*TX bytes:([0-9]+)/; $RX+=$1; $TX+=$2;} print "$TX" ')
    RX_BYTES_2=$(ifconfig ppp0 | tail -n 2 | head -1 | perl -ne ' m/.*?:([0-9]+).*?:([0-9]+)/; print "$1" ')
    TX_BYTES_2=$(ifconfig ppp0 | tail -n 2 | head -1 | perl -ne ' m/.*?:([0-9]+).*?:([0-9]+)/; print "$2" ')
    echo ${RX_BYTES_1}
    echo ${TX_BYTES_1}
    echo ${RX_BYTES_2}
    echo ${TX_BYTES_2}


    bringt folgende Ausgabe:

    evil:/ # ./loger_test.sh
    ppp0 Link encap:Point-to-Point Protocol
    inet addr:217.231.158.137 P-t-P:217.5.98.177 Mask:255.255.255.255
    UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
    RX packets:2077814 errors:0 dropped:0 overruns:0 frame:0
    TX packets:1707497 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:3
    RX bytes:1642188898 (1566.1 Mb) TX bytes:358904400 (342.2 Mb)

    3284377796
    717808880
    1642189352
    358904486

    irgendwie sind die ersten beiden Zeilen das doppelte des eigentlichen wertes??


    der tom

  8. #8
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Kleiner Fehler meinerseits, die Korrektur:

    Code:
    > ifconfig ppp0
    > RX_BYTES_1=$(ifconfig ppp0| perl -e 'for(<>) { /RX bytes:([0-9]+).*TX bytes:([0-9]+)/ and \
                            $RX+=$1 and $TX+=$2;} print "$RX" ')
    > TX_BYTES_1=$(ifconfig ppp0| perl -e 'for(<>) { /RX bytes:([0-9]+).*TX bytes:([0-9]+)/ and \
                            $RX+=$1 and $TX+=$2;} print "$TX" ')
    Geändert von fork (18-10-2002 um 20:23 Uhr)

  9. #9
    Registrierter Benutzer
    Registriert seit
    08.01.2001
    Beiträge
    242
    so - nun rennts wie's soll - falls es jemanden interessiert, hier das fertige script:

    #!/bin/sh
    #
    #
    # traffic_db.sh
    #

    if [ ! "$(/sbin/ifconfig | grep ppp0)" == "" ]; then

    a_IP=`netstat -rn | egrep ^0.0.0.0 | sed -e "s,.* ,,g" | xargs /sbin/ifconfig | grep "inet.addr" | sed -e "s,.*addr:,," -e "s, .*,,"`

    a_RX_BYTES=$(/sbin/ifconfig ppp0 | tail -n 2 | head -1 | perl -ne ' m/.*?[0-9]+).*?[0-9]+)/; print "$1" ')
    a_TX_BYTES=$(/sbin/ifconfig ppp0 | tail -n 2 | head -1 | perl -ne ' m/.*?[0-9]+).*?[0-9]+)/; print "$2" ')

    a_date=`date +%Y.%m.%d-%k:%M:%S`
    a_jahr=`date +%Y`
    a_monat=`date +%m`
    a_tag=`date +%d`
    a_zeit=`date +%k:%M:%S`
    a_unixtime=`date +%s`

    o_RX_BYTES=`cat /var/log/traffic/traffic.tmp | grep "o_RX_BYTES" | cut -c12-`
    o_TX_BYTES=`cat /var/log/traffic/traffic.tmp | grep "o_TX_BYTES" | cut -c12-`
    o_IP=`cat /var/log/traffic/traffic.tmp | grep "o_IP" | cut -c6-`


    if [ "$o_IP" = "$a_IP" ]; then
    data_rx=`expr ${a_RX_BYTES} - ${o_RX_BYTES}`
    data_tx=`expr ${a_TX_BYTES} - ${o_TX_BYTES}`
    else
    data_rx=${a_RX_BYTES}
    data_tx=${a_TX_BYTES}
    fi

    echo "INSERT INTO ppp0 VALUES ('${a_unixtime}','${a_jahr}','${a_monat}','${a_tag }','$a_IP','${data_rx}','${data_tx}','${a_RX_BYTES }','${a_TX_BYTES}','${a_zeit}');" > /var/log/traffic/trafficdb.tmp
    mysql -u root -pgeheim --database=traffic < /var/log/traffic/trafficdb.tmp
    rm -f /var/log/traffic/trafficdb.tmp

    echo o_RX_BYTES=${a_RX_BYTES} > /var/log/traffic/traffic.tmp
    echo o_TX_BYTES=${a_TX_BYTES} >> /var/log/traffic/traffic.tmp
    echo o_IP=${a_IP} >> /var/log/traffic/traffic.tmp

    else

    echo "ppp0 nicht Aktiv!"

    fi

    exit 0



    ist sicherlich an manchen stellen verbesserungswürdig, aber es tut - danke an die die mir geholfen haben

    der tom

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •