#!/bin/bash
# 統計upd丟包工具
# 可選引數1:統計間隔(單位:秒,預設10秒)
# 可選引數2:是否輸出丟包為0的記錄,注意有引數1時,引數2才會生效
## 執行結果會寫日誌,日誌檔案優先存工具相同的目錄,
# 但如果沒有許可權,則選擇當前目錄,
# 當前目錄無許可權,則存tmp目錄,
# 如果tmp目錄還無許可權,則報錯退出。
## 輸出格式:統計日期 統計時間 丟包數
# 輸出示例:
# 2018-09-03 17:22:49 5
# 2018-09-03 17:22:51 3
## 可用udp測試工具:
flag=0
stat_seconds=10
if test $# -gt 2; then
echo "usage: `basename $0` [seconds] [0|1]"
exit 1
fiif test $# -gt 1; then
flag=$2 # 值為1表示輸出丟包為0的記錄
fiif test $# -gt 0; then
stat_seconds=$1
fi# 下段不允許出錯
set -e
# 日誌檔案
basedir=$(dirname $(readlink -f $0))
logname=`basename $0 .sh`
logfile=$basedir/$logname.log
if test ! -w $basedir; then
basedir=`pwd`
logfile=$basedir/$logname
if test ! -w $basedir; then
basedir=/tmp
logfile=$basedir/$logname
fifi# 備份日誌檔案
bak_logfile=$logfile.bak
if test -f $logfile; then
rm --interactive=never $logfile
touch $logfile
fi# 恢復
set +e
# 統計哪些網絡卡,不填寫則自動取
#ethx_array=()
##if test $# -eq 0; then
# ethx_array=(`cat /proc/net/dev| awk -f[\ \:]+ '/eth/'`)
#else
# ethx_array=($*)
#fiold_num_errors=0
for ((;;))
do # 1) 檢視佇列中的包數:netstat –alupt
# 2) 檢視socket讀緩衝區大小:cat /proc/sys/net/core/rmem_default
# 3) 檢視socket讀緩衝區大小:cat /proc/sys/net/core/wmem_default
# 4) 檢視網絡卡佇列大小:ethtool -g eth1
# 5) 檢視arp快取佇列大小:cat /proc/sys/net/ipv4/neigh/eth1/unres_qlen
# 6) 檢視cpu負載:mpstat -p all 1 或 vmstat 1 或 top 或 htop 或uptime
## 取得丟包數
# 命令「cat /proc/net/snmp | grep udp」比命令「netstat –su」好
# num_drops=`netstat -su | awk -f[\ ]+ 'begin'`
num_errors=`cat /proc/net/snmp | awk -f'[ ]'+ 'begin/udp/'`
if test $old_num_errors -eq 0; then
old_num_errors=$num_errors
elif test $num_errors -ge $old_num_errors; then
num_drops=$(($num_errors - $old_num_errors))
if test $flag -eq 1 -o $num_drops -ne 0; then
line="`date '+%y-%m-%d %h:%m:%s'` $num_drops"
# 得到日誌檔案大小(5368709120 = 5 \* 1024 \* 1024 \* 1024)
logfile_size=`ls -l --time-style=long-iso $logfile 2>/dev/null| awk -f[\ ]+ ''`
if test ! -z "$logfile_size"; then
if test $logfile_size -gt 5368709120; then
echo $line | tee -a $logfile
mv $logfile $bak_logfile
rm -f $logfile
fifi
echo $line | tee -a $logfile
fifi
sleep $stat_seconds
done
發包工具開發
20100307 經過年前的嘗試,通過linnet,報文已經可以發出了,但是,發包工具的開發本來就是來學習的,不能完全以來於libnet的組包方式。經過檢視,libnet也是通過socket來傳送報文的。所以這裡,我也可以直接使用socket傳送報文,這樣自由度更加高一點。現在是準備作開發的時候了,...
抓包工具分析
寫乙個抓包工具專案的分析吧。前幾天接到乙個需求,大致是做乙個高效能的抓包和協議分析工具,抓出的包儲存到檔案裡,效能要求是500mb s。客戶要求是乙個開放式框架來開發這個工具,既要完成大概5種協議的協議頭分析,也要能夠方便開發新的協議分析外掛程式。整個專案的框架為 框架程式 配置檔案 外掛程式。其中...
資料 抓包工具
android 前言 對於移動端應用來說,常常是需要進行抓包分析資料引數的,android抓包常規想到的解決方案就是通過adb tcpdump生成抓包檔案後,上傳至pc端,再通過wirshark檢視抓包的資料,但是,對於android應用來說,客戶端與服務端的互動更多的是以rest介面服務形式的,多...