日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux前10ip,检查网口流量与前10名流量大IP

發布時間:2025/3/12 linux 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux前10ip,检查网口流量与前10名流量大IP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

此腳本包含的功能有:1、實時監控任意網卡的流量

2、統計10秒內平均流量

3、統計每個端口在10秒內的平均流量,基于客戶端和服務端端口統計。可以看出哪些端口占流量比較大,對于web服務器,一般是80端口。其它端口受到***時,也有可能其它端口流量比較大。所以此功能可以幫助我們端口流量是否正常。

4、統計在10s內占用帶寬最大的前10個ip。此項功能可以幫助我們來查出是否有惡意占用帶寬的ip。

5、統計連接狀態。此項功能可以讓我們看出哪些連接狀態比較大。如果SYN-RECV狀態比較多的話,有可以受到半連接***。如果ESTABLISED非常大,但通過日志發現沒有那么多請求,或者通過tcpdump發現大量ip只建立連接不請求數據的話,可能是受到了全連接***,這時候如果你使用的是nginx服務器,可以在配置文件增加listen 80 deferred來防止。

6、統計各端口連接狀態。當可能受到***時,此項功能可以幫助我們發現是哪個端口受到***。

7、統計端口為80且狀態為ESTAB連接數最多的前10個IP。此項功能可以幫助我們來找出創建連接過多的Ip,進而屏蔽。

8、統計端口為80且狀態為SYN-RECV連接數最多的前10個IP。當受到半連接***時,此項功能可以幫助我們找到惡意ip

用到的網絡分析工具:1、tcpdump:此腳本用tcpdump來統計基于ip或基于端口的流量。

2、ss: 此腳本用ss命令來統計連接狀態,實際使用發現ss比netstat高效得多。

3、/proc/net/dev,用來統計指定網卡的流量。#!/bin/bash

#顯示菜單(單選)

display_menu(){

local?soft=$1

local?prompt="which?${soft}?you'd?select:?"

eval?local?arr=(\${${soft}_arr[@]})

while?true

do

echo?-e?"####################?${soft}?setting?####################\n\n"

for?((i=1;i<=${#arr[@]};i++?));?do?echo?-e?"$i)?${arr[$i-1]}";?done

echo

read?-p?"${prompt}"?$soft

eval?local?select=\$$soft

if?[?"$select"?==?""?]?||?[?"${arr[$soft-1]}"?==?""??];then

prompt="input?errors,please?input?a?number:?"

else

eval?$soft=${arr[$soft-1]}

eval?echo?"your?selection:?\$$soft"

break

fi

done

}

#把帶寬bit單位轉換為人類可讀單位

bit_to_human_readable(){

#input?bit?value

local?trafficValue=$1

if?[[?${trafficValue%.*}?-gt?922?]];then

#conv?to?Kb

trafficValue=`awk?-v?value=$trafficValue?'BEGIN{printf?"%0.1f",value/1024}'`

if?[[?${trafficValue%.*}?-gt?922?]];then

#conv?to?Mb

trafficValue=`awk?-v?value=$trafficValue?'BEGIN{printf?"%0.1f",value/1024}'`

echo?"${trafficValue}Mb"

else

echo?"${trafficValue}Kb"

fi

else

echo?"${trafficValue}b"

fi

}

#判斷包管理工具

check_package_manager(){

local?manager=$1

local?systemPackage=''

if?cat?/etc/issue?|?grep?-q?-E?-i?"ubuntu|debian";then

systemPackage='apt'

elif?cat?/etc/issue?|?grep?-q?-E?-i?"centos|red?hat|redhat";then

systemPackage='yum'

elif?cat?/proc/version?|?grep?-q?-E?-i?"ubuntu|debian";then

systemPackage='apt'

elif?cat?/proc/version?|?grep?-q?-E?-i?"centos|red?hat|redhat";then

systemPackage='yum'

else

echo?"unkonw"

fi

if?[?"$manager"?==?"$systemPackage"?];then

return?0

else

return?1

fi

}

#實時流量

realTimeTraffic(){

local?eth=""

local?nic_arr=(`ifconfig?|?grep?-E?-o?"^[a-z0-9]+"?|?grep?-v?"lo"?|?uniq`)

local?nicLen=${#nic_arr[@]}

if?[[?$nicLen?-eq?0?]];?then

echo?"sorry,I?can?not?detect?any?network?device,please?report?this?issue?to?author."

exit?1

elif?[[?$nicLen?-eq?1?]];?then

eth=$nic_arr

else

display_menu?nic

eth=$nic

fi

local?clear=true

local?eth_in_peak=0

local?eth_out_peak=0

local?eth_in=0

local?eth_out=0

while?true;do

#移動光標到0:0位置

printf?"\033[0;0H"

#清屏并打印Now?Peak

[[?$clear?==?true?]]?&&?printf?"\033[2J"?&&?echo?"$eth--------Now--------Peak-----------"

traffic_be=(`awk?-v?eth=$eth?-F'[:?]+'?'{if?($0?~eth){print?$3,$11}}'?/proc/net/dev`)

sleep?2

traffic_af=(`awk?-v?eth=$eth?-F'[:?]+'?'{if?($0?~eth){print?$3,$11}}'?/proc/net/dev`)

#計算速率

eth_in=$((?(${traffic_af[0]}-${traffic_be[0]})*8/2?))

eth_out=$((?(${traffic_af[1]}-${traffic_be[1]})*8/2?))

#計算流量峰值

[[?$eth_in?-gt?$eth_in_peak?]]?&&?eth_in_peak=$eth_in

[[?$eth_out?-gt?$eth_out_peak?]]?&&?eth_out_peak=$eth_out

#移動光標到2:1

printf?"\033[2;1H"

#清除當前行

printf?"\033[K"

printf?"%-20s?%-20s\n"?"Receive:??$(bit_to_human_readable?$eth_in)"?"$(bit_to_human_readable?$eth_in_peak)"

#清除當前行

printf?"\033[K"

printf?"%-20s?%-20s\n"?"Transmit:?$(bit_to_human_readable?$eth_out)"?"$(bit_to_human_readable?$eth_out_peak)"

[[?$clear?==?true?]]?&&?clear=false

done

}

#流量和連接概覽

trafficAndConnectionOverview(){

if?!?which?tcpdump?>?/dev/null;then

echo?"tcpdump?not?found,going?to?install?it."

if?check_package_manager?apt;then

apt-get?-y?install?tcpdump

elif?check_package_manager?yum;then

yum?-y?install?tcpdump

fi

fi

local?reg=""

local?eth=""

local?nic_arr=(`ifconfig?|?grep?-E?-o?"^[a-z0-9]+"?|?grep?-v?"lo"?|?uniq`)

local?nicLen=${#nic_arr[@]}

if?[[?$nicLen?-eq?0?]];?then

echo?"sorry,I?can?not?detect?any?network?device,please?report?this?issue?to?author."

exit?1

elif?[[?$nicLen?-eq?1?]];?then

eth=$nic_arr

else

display_menu?nic

eth=$nic

fi

echo?"please?wait?for?10s?to?generate?network?data..."

echo

#當前流量值

local?traffic_be=(`awk?-v?eth=$eth?-F'[:?]+'?'{if?($0?~eth){print?$3,$11}}'?/proc/net/dev`)

#tcpdump監聽網絡

tcpdump?-v?-i?$eth?-tnn?>?/tmp/tcpdump_temp?2>&1?&

sleep?10

clear

kill?`ps?aux?|?grep?tcpdump?|?grep?-v?grep?|?awk?'{print?$2}'`

#處理tcpdump文件

awk?'/^IP/{print;getline;print}'?/tmp/tcpdump_temp?>?/tmp/tcpdump_temp2

awk?'{len=$NF;sub(/\)/,"",len);getline;print?$0,len}'?/tmp/tcpdump_temp2?>?/tmp/tcpdump

#10s后流量值

local?traffic_af=(`awk?-v?eth=$eth?-F'[:?]+'?'{if?($0?~eth){print?$3,$11}}'?/proc/net/dev`)

#打印10s平均速率

local?eth_in=$((?(${traffic_af[0]}-${traffic_be[0]})*8/10?))

local?eth_out=$((?(${traffic_af[1]}-${traffic_be[1]})*8/10?))

echo?-e?"\033[32mnetwork?device?$eth?average?traffic?in?10s:?\033[0m"

echo?"$eth?Receive:?$(bit_to_human_readable?$eth_in)/s"

echo?"$eth?Transmit:?$(bit_to_human_readable?$eth_out)/s"

echo

#統計每個端口在10s內的平均流量

regTcpdump=$(ifconfig?|?grep?-A?1?$eth?|?awk?-F'[:?]+'?'$0~/inet?addr:/{printf?$4"|"}'?|?sed?-e?'s/|$//'?-e?'s/^/(/'?-e?'s/$/)\\\\\.[0-9]+:/')

echo?-e?"\033[32maverage?traffic?in?10s?base?on?server?port:?\033[0m"

awk?-F'[?.:]+'?-v?regTcpdump=$regTcpdump?'{if?($0?~?regTcpdump){line="clients?>?"$8"."$9"."$10"."$11":"$12}else{line=$2"."$3"."$4"."$5":"$6"?>?clients"};sum[line]+=$NF*8/10}END{for?(line?in?sum){printf?"%s?%d\n",line,sum[line]}}'?/tmp/tcpdump?|?\

sort?-k?4?-nr?|?head?-n?10?|?while?read?a?b?c?d;do

echo?"$a?$b?$c?$(bit_to_human_readable?$d)/s"

done

echo

echo?-e?"\033[32maverage?traffic?in?10s?base?on?client?port:?\033[0m"

awk?-F'[?.:]+'?-v?regTcpdump=$regTcpdump?'{if?($0?~?regTcpdump){line=$2"."$3"."$4"."$5":"$6"?>?server"}else{line="server?>?"$8"."$9"."$10"."$11":"$12};sum[line]+=$NF*8/10}END{for?(line?in?sum){printf?"%s?%d\n",line,sum[line]}}'?/tmp/tcpdump?|?\

sort?-k?4?-nr?|?head?-n?10?|?while?read?a?b?c?d;do

echo?"$a?$b?$c?$(bit_to_human_readable?$d)/s"

done

echo

#統計在10s內占用帶寬最大的前10個ip

echo?-e?"\033[32mtop?10?ip?average?traffic?in?10s?:?\033[0m"

awk?-F'[?.:]+'?-v?regTcpdump=$regTcpdump?'{if?($0?~?regTcpdump){line=$2"."$3"."$4"."$5"?>?"$8"."$9"."$10"."$11":"$12}else{line=$2"."$3"."$4"."$5":"$6"?>?"$8"."$9"."$10"."$11};sum[line]+=$NF*8/10}END{for?(line?in?sum){printf?"%s?%d\n",line,sum[line]}}'?/tmp/tcpdump?|?\

sort?-k?4?-nr?|?head?-n?10?|?while?read?a?b?c?d;do

echo?"$a?$b?$c?$(bit_to_human_readable?$d)/s"

done

echo

#統計連接狀態

regSS=$(ifconfig?|?grep?-A?1?$eth?|?awk?-F'[:?]+'?'$0~/inet?addr:/{printf?$4"|"}'?|?sed?-e?'s/|$//')

ss?-an?|?grep?-v?-E?"LISTEN|UNCONN"?|?grep?-E?"$regSS"?>?/tmp/ss

echo?-e?"\033[32mconnection?state?count:?\033[0m"

awk?'NR>1{sum[$(NF-4)]+=1}END{for?(state?in?sum){print?state,sum[state]}}'?/tmp/ss?|?sort?-k?2?-nr

echo

#統計各端口連接狀態

echo?-e?"\033[32mconnection?state?count?by?port:?\033[0m"

awk?'NR>1{sum[$(NF-4),$(NF-1)]+=1}END{for?(key?in?sum){split(key,subkey,SUBSEP);print?subkey[1],subkey[2],sum[subkey[1],subkey[2]]}}'?/tmp/ss?|?sort?-k?3?-nr?|?head?-n?10

echo

#統計端口為80且狀態為ESTAB連接數最多的前10個IP

echo?-e?"\033[32mtop?10?ip?ESTAB?state?count?at?port?80:?\033[0m"

cat?/tmp/ss?|?grep?ESTAB?|?awk?-F'[:?]+'?'{sum[$(NF-2)]+=1}END{for?(ip?in?sum){print?ip,sum[ip]}}'?|?sort?-k?2?-nr?|?head?-n?10

echo

#統計端口為80且狀態為SYN-RECV連接數最多的前10個IP

echo?-e?"\033[32mtop?10?ip?SYN-RECV?state?count?at?port?80:?\033[0m"

cat?/tmp/ss?|?grep?-E?"$regSS"?|?grep?SYN-RECV?|?awk?-F'[:?]+'?'{sum[$(NF-2)]+=1}END{for?(ip?in?sum){print?ip,sum[ip]}}'?|?sort?-k?2?-nr?|?head?-n?10

}

main(){

while?true;?do

echo?-e?"1)?real?time?traffic.\n2)?traffic?and?connection?overview.\n"

read?-p?"please?input?your?select(ie?1):?"?select

case??$select?in

1)?realTimeTraffic;break;;

2)?trafficAndConnectionOverview;break;;

*)?echo?"input?error,please?input?a?number.";;

esac

done

}

main

總結

以上是生活随笔為你收集整理的linux前10ip,检查网口流量与前10名流量大IP的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产日韩欧美视频在线 | 欧美男女交配 | 国产精品麻豆果冻传媒在线播放 | 奇米影视在线播放 | 欧美亚洲一二三区 | 亚洲精品国产精品乱码不99热 | 天天爱天天草 | 欧亚av| 午夜激情福利电影 | 美女污污网站 | hs网站在线观看 | 国产免费激情 | 国产亚洲精品久久久久丝瓜 | 国产色婷婷一区二区三区竹菊影视 | 中国国产毛片 | 精品人妻一区二区三区四区不卡 | 欧美aaa视频| 久久影院国产 | 亚洲美免无码中文字幕在线 | a中文字幕 | 美女天天干 | 黄色a站| 国产伦精品一区二区三区高清 | 成人免费毛片东京热 | 中文字幕av一区二区三区 | 国产精品视频全国免费观看 | 成人免费观看视频 | 97精品视频在线 | 真人真事免费毛片 | 激情网五月天 | 日本人的性生活视频 | 少妇高潮一区二区三区在线 | 精品一卡二卡 | 超碰激情 | 一二三区在线 | 9人人澡人人爽人人精品 | 永久免费视频网站直接看 | 五月天色视频 | 亚洲AV无码阿娇国产精品 | 黄色片免费在线观看 | 五月情婷婷 | 台湾佬在线| 免费在线观看一区二区 | 精品国产污污免费网站入口 | 国产粉嫩呻吟一区二区三区 | 成人av免费在线看 | 黄色片网站在线观看 | 亚洲国产毛片aaaaa无费看 | 影音先锋色小姐 | 91水蜜桃| 精品国产污污免费网站入口 | 中文字幕少妇 | 亚洲av电影一区 | 亚洲精品国产精品国自产在线 | jizz日本在线播放 | 操操操日日日 | 91精品国产91久久久久青草 | 三年大全国语中文版免费播放 | 久久在线一区二区 | 亚洲国产精品人人爽夜夜爽 | 性色综合 | 成人在线观看18 | 欧美一区二区三区大屁股撅起来 | 免费黄网站在线 | 久久精品a亚洲国产v高清不卡 | 亚洲欧美日韩色 | 精品日韩一区二区三区 | 国产精品热久久 | 非洲黑人狂躁日本妞 | 女女综合网 | 国产激情一区 | kk视频在线观看 | 国产精品国产一区二区 | av人人干 | 国产一区二区自拍视频 | 老师上课夹震蛋高潮了 | 波多野结衣av在线观看 | 成人免费在线电影 | 天天看夜夜操 | 午夜性生活视频 | 亚洲av永久无码国产精品久久 | 日本999视频 | 天堂av.com | 7777久久亚洲中文字幕 | 色丁香在线 | 欧亚毛片 | 91精品国产99久久久久久 | 国产精品久久777777 | 亚洲国产精品网站 | 男女羞羞动态图 | 五月婷婷开心 | 中文天堂资源在线 | 亚洲视频在线观看网站 | 亚洲熟女乱色一区二区三区久久久 | 一区影视 | 亚洲视频在线一区 | 天堂√8在线中文 | 亚洲 欧美 激情 另类 校园 | 麻豆精品久久久久久久99蜜桃 |