Dulu pernah terpikir dibenak saya untuk menghitung packet yang lewat
IPFW
dan seperti biasa hasilnya saya phasing ke MRTG
. Tapi kendalanya packet selalu bertambah jumlahnya sesuai dengan output rules dari IPFW
; dengan ini grafik yang dihasilnya bersifat naik terus sampe ketika mesin reboot
barulah ia kembali ke nol. Jadi, perhitungan rata-rata packet yang masuk/keluar lewat router per-satuan waktu tidak didapatkan alias tidak dinamis. Barulah setelah saya ingat beberapa teknik lama pemograman yaitu dengan variable dummy
dengan mencatat packet awal/akhir, lalu dihitung selisihnya per-satuan waktu, hasil grafik terlihat lebih manusiawi :-).
Ini adalah satu contoh sederhana scripting
yang saya buat:#!/bin/sh
# TmpFile
TEMPFILE="/tmp/ipfw.tu"
# TCP/UDP grab to file
OLDT1=`ipfw -a list | grep 00300 > $TEMPFILE`
OLDT2=`ipfw -a list | grep 00301 >> $TEMPFILE`
OLDT3=`ipfw -a list | grep 00302 >> $TEMPFILE`
OLDT4=`ipfw -a list | grep 00303 >> $TEMPFILE`
OLDU1=`ipfw -a list | grep 00400 >> $TEMPFILE`
OLDU2=`ipfw -a list | grep 00401 >> $TEMPFILE`
OLDU3=`ipfw -a list | grep 00402 >> $TEMPFILE`
OLDU4=`ipfw -a list | grep 00403 >> $TEMPFILE`
# Fetch old packets
OLDTI1=`grep 00300 $TEMPFILE | awk '{print $2}'`
OLDTI2=`grep 00301 $TEMPFILE | awk '{print $2}'`
OLDTI3=`grep 00302 $TEMPFILE | awk '{print $2}'`
OLDTI4=`grep 00303 $TEMPFILE | awk '{print $2}'`
OLDTO1=`grep 00300 $TEMPFILE | awk '{print $3}'`
OLDTO2=`grep 00301 $TEMPFILE | awk '{print $3}'`
OLDTO3=`grep 00302 $TEMPFILE | awk '{print $3}'`
OLDTO4=`grep 00303 $TEMPFILE | awk '{print $3}'`
OLDUI1=`grep 00400 $TEMPFILE | awk '{print $2}'`
OLDUI2=`grep 00401 $TEMPFILE | awk '{print $2}'`
OLDUI3=`grep 00402 $TEMPFILE | awk '{print $2}'`
OLDUI4=`grep 00403 $TEMPFILE | awk '{print $2}'`
OLDUO1=`grep 00400 $TEMPFILE | awk '{print $3}'`
OLDUO2=`grep 00401 $TEMPFILE | awk '{print $3}'`
OLDUO3=`grep 00402 $TEMPFILE | awk '{print $3}'`
OLDUO4=`grep 00403 $TEMPFILE | awk '{print $3}'`
# Clean TmpFile
rm -f $TEMPFILE
# Summ TCP old packets
SOLDTIO=$(($OLDTI1+$OLDTI2+$OLDTI3+$OLDTI4 \
+$OLDTO1+$OLDTO2+$OLDTO3+$OLDTO4))
# Summ UDP old packets
SOLDUIO=$(($OLDUI1+$OLDUI2+$OLDUI3+$OLDUI4 \
+$OLDUO1+$OLDUO2+$OLDUO3+$OLDUO4))
# Fetch TCP curr packets
NEWTI1=`ipfw -a list | grep 00300 | awk '{print $2}'`
NEWTI2=`ipfw -a list | grep 00301 | awk '{print $2}'`
NEWTI3=`ipfw -a list | grep 00302 | awk '{print $2}'`
NEWTI4=`ipfw -a list | grep 00303 | awk '{print $2}'`
NEWTO1=`ipfw -a list | grep 00300 | awk '{print $3}'`
NEWTO2=`ipfw -a list | grep 00301 | awk '{print $3}'`
NEWTO3=`ipfw -a list | grep 00302 | awk '{print $3}'`
NEWTO4=`ipfw -a list | grep 00303 | awk '{print $3}'`
# Summ TCP curr packets
SNEWTIO=$(($NEWTI1+$NEWTI2+$NEWTI3+$NEWTI4 \
+$NEWTO1+$NEWTO2+$NEWTO3+$NEWTO4))
# Fetch UDP curr packets
NEWUI1=`ipfw -a list | grep 00400 | awk '{print $2}'`
NEWUI2=`ipfw -a list | grep 00401 | awk '{print $2}'`
NEWUI3=`ipfw -a list | grep 00402 | awk '{print $2}'`
NEWUI4=`ipfw -a list | grep 00403 | awk '{print $2}'`
NEWUO1=`ipfw -a list | grep 00400 | awk '{print $3}'`
NEWUO2=`ipfw -a list | grep 00401 | awk '{print $3}'`
NEWUO3=`ipfw -a list | grep 00402 | awk '{print $3}'`
NEWUO4=`ipfw -a list | grep 00403 | awk '{print $3}'`
# Summ UDP curr packets
SNEWUIO=$(($NEWUI1+$NEWUI2+$NEWUI3+$NEWUI4 \
+$NEWUO1+$NEWUO2+$NEWUO3+$NEWUO4))
# Diff old/curr packets
DIFFTIO=$(($SNEWTIO-$SOLDTIO))
DIFFUIO=$(($SNEWUIO-$SOLDUIO))
# Prob all result
echo $DIFFTIO
echo $DIFFUIO
Selanjutnya hasilnya tinggal ditampilkan ke
MRTG
atau RRDTool
. Dibawah ini saya coba menggunakan MRTG
:Target[ipfw.tu]: `/usr/local/bin/ipfw.tu`
Title[ipfw.tu]: IPFW TCP/UDP Packets Summary
Colours[ipfw.tu]: DODGERBLUE#1E90FF,BLUE#0000FF,DODGERBLUE#1E90FF,BLUE#0000FF
RouterUptime[ipfw.tu]: local@localhost
MaxBytes[ipfw.tu]: 30000
AbsMax[ipfw.tu]: 30000
YTics[ipfw.tu]: 10
PageTop[ipfw.tu]: IPFW TCP/UDP Packets Summary
YLegend[ipfw.tu]: Packets/5 Min
ShortLegend[ipfw.tu]:
LegendI[ipfw.tu]: TCP
LegendO[ipfw.tu]: UDP
Legend1[ipfw.tu]:
Legend2[ipfw.tu]:
Options[ipfw.tu]: gauge, growright, avgpeak, integer, absolute, pngdate
Selamat mencoba :-)
Tidak ada komentar:
Posting Komentar