統計UPD丟包工具

2021-08-27 03:25:56 字數 2638 閱讀 2411

#!/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介面服務形式的,多...