Archiv verlassen und diese Seite im Standarddesign anzeigen : ip accounting
hi leute... ich brauch wiedermal euren rat, leider bin ich echt ratLOS! :(
hab folgende aufgabenstellung: ip accounting mit shellskript mit:
1) externes tool zb tcpdump oder iptabels :mad:
2) packet und byte counter (prock / net device) :eek:
die ergebnisse in eine datei.. auswerten und aufsummieren!
sagmal hat irgendwer eine ahnung?? bitte wäre echt nett!
tcpdump versteh ich ja noch aber was is proc / net genau? und wie soll man das auswerten? immer grepn is doch fad? :(
mfg
hi leute... ich brauch wiedermal euren rat, leider bin ich echt ratLOS! :(
hab folgende aufgabenstellung: ip accounting mit shellskript mit:
1) externes tool zb tcpdump oder iptabels :mad:
2) packet und byte counter (prock / net device) :eek:
die ergebnisse in eine datei.. auswerten und aufsummieren!
sagmal hat irgendwer eine ahnung?? bitte wäre echt nett!
tcpdump versteh ich ja noch aber was is proc / net genau? und wie soll man das auswerten? immer grepn is doch fad? :(
mfg
paket und bytecounter -> ntop
danke! gibt es keine andere möglichkeit? ntop ist ein daemon... ich sollte dies mit herkömmlichen mitteln schaffen... :confused: :confused: :confused:
mfg
danke! gibt es keine andere möglichkeit? ntop ist ein daemon... ich sollte dies mit herkömmlichen mitteln schaffen... :confused: :confused: :confused:
daemons sind unter .nix herkömmliche Mittel
hab folgende aufgabenstellung: ip accounting mit shellskript mit
wer stellt Dir denn solche Aufgaben? :confused:
der lehrer :(
ich soll tcpdump oder iptables verwenden und (packet und byte counter) des kernels (device proc/net)
HILFE!!!
mfg
Auch wenn ich sonst fertige Lösungen hier poste, ist dieses Thema recht komplex und ich weiß nicht, wie weit Ihr gehen sollt, da so Themen wie "soll es bootfest sein", "was passiert beim Überlauf der Counter", etc. das ganze (fast) beliebig komplex machen können.
Aber hier einen Ansatz:
interface=eth0
set `grep $interface: /proc/net/dev`
bytesOut=${2}
pktsOut=${3}
bytesIn=${10}
pktsIn=${11}
Addieren in der bash:
summe=$(($arg1+$arg2))
viel Erfolg ... und: daemons sind besser ;)
danke! ich werds gleich probieren!
de aufgabe lautet:
Aufgabenstellung:
Es soll ein Shellskript zur Messung von IP Traffic über das / die Ethernet Interface(s) Ihres Linuxsystems geschrieben werden.
Verwenden Sie dazu:
a.) Ein externes Tool zur Messung exakter Werte z.B. tcpdump oder iptables (auch für Firewall gut geeignet). Wie arbeiten diese Tools?
b.) Packet und Byte Counter des Kernels (Device proc/net )
Die Ergebnisse die das jeweilige Tool liefert sollen ausgewertet / aufsummiert werden.
Speichern Sie die Ergebnisse in eine Datei und stellen Sie diese Datei mit Ihrem Skript übersichtlich tabellarisch und färbig dar.
Zeigen Sie alle Werte, Wochen und Tageswerte für jedes Interface an.
Welche Ergebnisse sind für Accounting interessant?
Als Vergleich in Ihrer Darstellung verwenden Sie auch die Ergebnisse des Packet und Byte Counters des Linux Kernels (Device proc/net ).
-------------------------
solltest noch ideen habn raus damit bitte bitte ;)
hier hast Du mal was zum experimentieren:
saveIfCounter:
#!/bin/bash
#
SaveDir=/var/log
NetDevs=/proc/net/dev
CounterFilePrefix=ifCounters
# make sure we have a sane env
PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin
# preliminary checks
[ -d $SaveDir ] || {
echo "Save directory '$SaveDir' does not exist!"
exit 1
}
[ -w $SaveDir ] || {
echo "Save directory '$SaveDir' is not writable!"
exit 1
}
[ -e $NetDevs ] || {
echo "Cannot read net devices file '$NetDevs'"
exit 1
}
timestamp=`date "+%s"`
grep ":" $NetDevs | tr ":" " " |
while read ifName bytsIn pktsIn x x x x x x bytsOut pktsOut x; do
[ -z "$ifName" ] && continue
echo $timestamp $bytsIn $pktsIn $bytsOut $pktsOut >>$SaveDir/$CounterFilePrefix.$ifName
done
calcThroughput:
#!/bin/bash
#
SaveDir=/var/log
CounterFilePrefix=ifCounters
# define system architecture (32Bit, 64Bit)
# this affects how wrapped counters are interpreted
Arch=32
# interface counters are 32Bit unsigned integers and wrap
# around if max is reached
counterMax=`echo "2^$Arch-1" | bc`
# make sure we have a sane env
PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin
counterDiff() {
cDiff=0
[ $# -ne 2 ] && return
cDiff=`echo "if ($1>=$2) $1-$2 else $counterMax-$2+$1+1" | bc`
}
# preliminary checks
[ -d $SaveDir ] || {
echo "Save directory '$SaveDir' does not exist!"
exit 1
}
# get list of interface counter files
fileList=`ls $SaveDir/$CounterFilePrefix.* 2>/dev/null`
for fname in $fileList; do
timestampP=0
ifName=${fname##*.}
echo "Interface: $ifName (Average values in 'per second')"
printf "%-18s %10s %10s %10s %10s\n" "Time" "AvgBytesIn" "AvgBytesOut" "AvgPktsIn" "AvgPktsOut"
while read timestamp bytsIn pktsIn bytsOut pktsOut x; do
if [ $timestamp -gt $timestampP -a $timestampP -gt 0 ] ; then
deltaTime=$((timestamp-$timestampP))
timeClear=`date --date "1/1/1970 0:0:$timestamp" "+%d.%m.%y %H:%M:%S"`
counterDiff $bytsIn $bytsInP ; bytsInDiff=$cDiff
counterDiff $bytsOut $bytsOutP ; bytsOutDiff=$cDiff
counterDiff $pktsIn $pktsInP ; pktsInDiff=$cDiff
counterDiff $pktsOut $pktsOutP ; pktsOutDiff=$cDiff
avgBytsIn=`echo "$bytsInDiff/$deltaTime" | bc`
avgBytsOut=`echo "$bytsOutDiff/$deltaTime" | bc`
avgPktsIn=`echo "$pktsInDiff/$deltaTime" | bc`
avgPktsOut=`echo "$pktsOutDiff/$deltaTime" | bc`
printf "%-18s %10u %10u %10u %10u\n" "$timeClear" $avgBytsIn $avgBytsOut $avgPktsIn $avgPktsOut
fi
timestampP=$timestamp
bytsInP=$bytsIn
pktsInP=$pktsIn
bytsOutP=$bytsOut
pktsOutP=$pktsOut
done <$fname
echo
done
/edit: timestampP=0 muß natürlich in die äußere Schleife ...
ich danke dir recht herzlich!!!
ich werde das umgehend ausprobieren... scheinst die rettung in der not zu sein! ;)
nochmals danke danke!!!
mfg
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.