目的:方便nfdump查询,通过dialog达到可以任意查询当前内2小时的流量信息

以下是script部分

 

#!/bin/bash/
#/usr/local/nfdump/bin/nfcapd -w -D -l /home/nfdump/MSR3016/ -p 9997
NFDIR=/home/nfdump/MSR3016/
DIA='/usr/bin/dialog'
NFDUMP='/usr/local/nfdump/bin/nfdump'
#需要安装dialog
############################################
cd $NFDIR
SUM=($(ls | grep nfcapd.[0-9] | cut -b 8- | sort -nr))
#查找nfdump.[0-9]并切掉前7个字符再排序,给变量SUM
############################################
M1="Choice Network Devices"
NUMDEV=1
DEVLIST="H3C MSR3016 off"
$DIA --radiolist "$M1" 10 40 $NUMDEV $DEVLIST
#选择网络设备
############################################
M2="Start Time"
NUMSTA=24
TMP1="/tmp/stalist.$$"
STALIST=$(echo ${SUM[@]:0:24} | sed 's/ / time off /g' | sed 's/$/ time off/')
$DIA --radiolist "$M2" 10 40 $NUMSTA $STALIST 2> $TMP1
STATIME=$(cat $TMP1)
#提起SUM数组中的0开始的24个,并在每个数值后加time off
############################################
declare -i x
for ((x=0; x<=24; x++))
do
if ((${SUM[x]} > $STATIME ));then
NSUM+=(${SUM[x]})
fi
done
#进行比较,筛选出比$STATIME大的值给$NSUM
M3="End Time"
NUMEND=24
TMP2="/tmp/endlist.$$"
ENDLIST=$(echo ${NSUM[@]} | sed 's/ / time off /g' | sed 's/$/ time off/')
$DIA --radiolist "$M3" 10 40 $NUMEND $ENDLIST 2> $TMP2
ENDTIME=$(cat $TMP2)
rm -f "$TMP1"
rm -f "$TMP2"
############################################################
$NFDUMP -R ${NFDIR}nfcapd.$STATIME:nfcapd.$ENDTIME -n 50  \
-o "fmt:%ts %sap -> %dap %pr %pkt %pkt " -s record/bytes | more