Forum » Programiranje » 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.
LP, Borut.
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.
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.
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
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
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.
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
Tole je ze malo bolje ;)
ifconfig eth0 | grep "RX bytes" | cut -d ":" -f 2 | cut -d " " -f 1
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;
}
(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.
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 ()
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.
Sm tut jest iskou kr neki casa ksno tako uredu zadevo, pa sm zadnc najdu tole. Morm rect da sm kr zadovoln.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | pomoč pri iptablesOddelek: Omrežja in internet | 2622 (2451) | HellRaiseR |
» | Linux in Direct ConnectOddelek: Omrežja in internet | 1550 (1420) | shock |
» | debian + program za štetje prometaOddelek: Programska oprema | 1326 (1277) | milimoj |
» | iptables + forwardOddelek: Operacijski sistemi | 2341 (1916) | tx-z |
» | DEBIAN problemOddelek: Omrežja in internet | 1849 (1659) | AirBladE |