» »

skripta v linuxu za izpis količino prometa

skripta v linuxu za izpis količino prometa

shock ::

Rad bi hotel imeti eno skripto v linxu, ki mi izpisuje količino prometa, ki sem jo naredil vsak mesec. Še lepše bi bilo da bi to tud grafično (PNG) prikazalo.

LP, Borut.

CCfly ::

shock ::

me ne zanima že narejene aplikacije. Jaz bi samo eno enostavno rešitev videl, da bi se potem po svoji lastni želji spreminjal parametre.

CCfly ::

Potem je pa najenostavneje napisati skripto v Perlu, kjer vsake toliko pobral informacije z ifconfig.

npr: pobereš vrstico
RX bytes:1742997247 (1662.2 Mb) TX bytes:273501966 (260.8 Mb)
in na koncu zrišeš vrednosti s pomočjo programa gnuplot.

No in nekaj takega počne tudi MRTG ki sem ti ga predlagal, samo da zna po informacijah povprašati še kakšno drugo napravo.

shock ::

aha še eno vprašanje potem imam, kako pa časovno to preverjam, a obstaja kakšen ukaz ki ob točnem določenem času sproži ukaz oz da se periodično to izvršuje.

CCfly ::

crontab

shock ::

kaj mi lahko še nekaj pomagaš

sem hotel narediti eno enostavno skripto lih tako da testiram pa mi lih ne uspe

#########################################
SHELL=/bin/sh

0-59/2 * * * * echo "test" > /home/test/test.txt
#########################################

namreč datoteko test.txt naredi ampak notri pa je prazna. A veš kje sem ga lahko polomil tukaj

CCfly ::

echo "test" > /home/test/test.txt je pravilno
Poskusi spremeniti prvo vrstico od skripte v #! /bin/bash

Nekaj takega:
#! /bin/bash
echo "test" > /home/test/test.txt

Zgodovina sprememb…

  • spremenilo: CCfly ()

CCfly ::

Na ni ravno elegantna ampak dela:
ifconfig eth0 | grep "RX bytes" | sed -e 's/[a-zA-Z:()]//g' -e 's/[ ]*[0-9]*[ ]\([0-9.]*\)[ ]*[0-9]* \([0-9.]*\)/\1 \2/'

Dobiš izpisan download in upload v MB.

BigWhale ::

Res ni elegantno...

Tole je ze malo bolje ;)

ifconfig eth0 | grep "RX bytes" | cut -d ":" -f 2 | cut -d " " -f 1

CCfly ::

Well yeah, but mine was cooler :D

KoReNJe ::

Spodaj konkreten primer za gledanje prometa uporabnikov, ki se povezujejo na internet prek pcja z linuxom.
(ne vem ce to spada sm.. sam vseen)

************************** NEKI PODOBNEGA DEJ V RC.D FAJL
# mark 1 = 1200 kbit/s eth0
# mark 2 = 100 kbit/s ppp0
# mark 3 = 600 kbit/s ppp0
iptables -t mangle -A FORWARD -d ${IPPC2} -j MARK --set-mark 1 #pc2 download
iptables -t mangle -A POSTROUTING -s ${IPPC2} -j MARK --set-mark 2 #pc2 upload
iptables -t mangle -A FORWARD -d ${IPPC1} -j MARK --set-mark 4 # pc1 download
iptables -t mangle -A POSTROUTING -s ${IPPC1} -j MARK --set-mark 3 #pc1 upload
iptables -t mangle -A POSTROUTING -s ${IPPC3} -j MARK --set-mark 5 #pc1 upload
iptables -t mangle -A FORWARD -d ${IPPC3} -j MARK --set-mark 6 # pc1 download

************************** PERL SKRIPTA SPODAJ
#!/usr/bin/perl

use Proc::Daemon;
print "Daemoniziram...\n";
Proc::Daemon::Init;

if(! -f "/home/web/mrtg/pc1.rrd"){
`/usr/local/rrdtool-1.0.45/bin/rrdtool create /home/web/mrtg/pc1.rrd --step 10 DS:input:COUNTER:40:0:1200000 DS:output:COUNTER:40:0:1200000 DS:input2:COUNTER:40:0:1200000 DS:output2:COUNTER:40:0:1200000 DS:input3:COUNTER:40:0:1200000 DS:output3:COUNTER:40:0:1200000 RRA:AVERAGE:0.5:1:60480 RRA:AVERAGE:0.5:60:51120 RRA:AVERAGE:0.5:360:42600 RRA:MAX:0.5:1:60480 RRA:MAX:0.5:60:51120 RRA:MAX:0.5:360:42600`;
}


my $in, @in, $out, @out, $out2, @out2, $in2, @in2;
while(){

$in=`/usr/sbin/iptables -t mangle -L -x -v -n|/usr/bin/grep 0x1`;
@in=split /\s+/,$in;
$out=`/usr/sbin/iptables -t mangle -L -x -v -n|/usr/bin/grep 0x2`;
@out=split /\s+/,$out;
if(! $in[0]){ $in=$in[2]; } else { $in=$in[1]; }
if(! $out[0]){ $out=$out[2]; } else { $out=$out[1]; }

$in2=`/usr/sbin/iptables -t mangle -L -x -v -n|/usr/bin/grep 0x4`;
@in2=split /\s+/,$in2;
$out2=`/usr/sbin/iptables -t mangle -L -x -v -n|/usr/bin/grep 0x3`;
@out2=split /\s+/,$out2;
if(! $in2[0]){ $in2=$in2[2]; } else { $in2=$in2[1]; }
if(! $out2[0]){ $out2=$out2[2]; } else { $out2=$out2[1]; }

$in3=`/usr/sbin/iptables -t mangle -L -x -v -n|/usr/bin/grep 0x5`;
@in3=split /\s+/,$in3;
$out3=`/usr/sbin/iptables -t mangle -L -x -v -n|/usr/bin/grep 0x6`;
@out3=split /\s+/,$out3;
if(! $in3[0]){ $in3=$in3[2]; } else { $in3=$in3[1]; }
if(! $out3[0]){ $out3=$out3[2]; } else { $out3=$out3[1]; }

`/usr/local/rrdtool-1.0.45/bin/rrdtool update /home/web/mrtg/pc1.rrd N:$in:$out:$in2:$out2:$in3:$out3`;
# print "Values: $in:$out:$in2:$out2:$in3:$out3\n";
sleep 10;
}

KoReNJe ::

se mal zabave....

perl -e'for(`ifconfig`){@a=split(/\s+|\:/,$_);$a=1if$a[0]eq"ppp0";if(${a}&&($a[2]eq"bytes")){print"$a[3] $a[8]\n";exit;}}'

oz mal bl easy z ukazom ifconfig [interface]

perl -e'for(`ifconfig eth1`){@a=split(/\s+|\:/,$_);print"$a[3] $a[8]\n"if$a[2]eq"bytes";}'

aja pa se glede gledanja kolicine prometa na mesec...
ker se podatki resetirajo v linuxu na vsake tolk casa, je najboljse da si naredis perl skripto ka ti bo na vsake tolk casa sestevala spremembo. tko naprimer na vsako uro. ker ce cez dan dljas vec kot 10 giga, se bo stevec resetiral... oz ne vem tocno kolk giga heh... sam vseen.
torej prvo uro si dlju $promet=10mega, drugo mas ze 30 mega. 20mega=abs((promet_zadnji-$promet_predzadnji)); $promet=$promet+20mega 3. uro dljas 60mega. $promet=$promet+30mega = 60mega. tko dobis promet cez mesec.

Zgodovina sprememb…

  • spremenilo: KoReNJe ()

der_Alte ::

Obrne se pri malo vec kot 4GiB. 32 bitni stevec ;)

Gunn3r ::

Drgac mas pa en precej uredu programcek pod imenom vnstat. google -> vnstat
Sm tut jest iskou kr neki casa ksno tako uredu zadevo, pa sm zadnc najdu tole. Morm rect da sm kr zadovoln.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

pomoč pri iptables

Oddelek: Omrežja in internet
102609 (2438) HellRaiseR
»

Linux in Direct Connect

Oddelek: Omrežja in internet
91539 (1409) shock
»

debian + program za štetje prometa

Oddelek: Programska oprema
51315 (1266) milimoj
»

iptables + forward

Oddelek: Operacijski sistemi
332333 (1908) tx-z
»

DEBIAN problem

Oddelek: Omrežja in internet
161830 (1640) AirBladE

Več podobnih tem