在Linux下怎么看网络流量

在Linux下怎么看网络流量,第1张

Linux查看网络流量

在GUI下面,有一大把的工具可以显示网络流量,那么,命令行下面怎么办?显然办法是有的,比如,ifconfig,会有这样的输 出:RX bytes:1224128649 (1.1 GiB) TX bytes:34114947 (32.5 MiB)过 一会再看,数值有所变化,两者的差值就是过去一段时间的流量。可是,这也太不人性化了……正所谓自己动手,丰衣足食,我们自己来写一个脚 本,实时显示并刷新!脚本如下,还是哪句话,本人功力有限,写脚本的原则是够用就好。

#!/bin/bashif [ -n "$1" ]theneth_name=$1elseeth_name="eth0"fii=0send_o=`ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'`recv_o=`ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}'`send_n=$send_orecv_n=$recv_owhile [ $i -le 100000 ]dosend_l=$send_nrecv_l=$recv_nsleep 1send_n=`ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'`recv_n=`ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}'`i=`expr $i + 1`send_r=`expr $send_n - $send_l`recv_r=`expr $recv_n - $recv_l`total_r=`expr $send_r + $recv_r`send_ra=`expr /( $send_n - $send_o /) / $i`recv_ra=`expr /( $recv_n - $recv_o /) / $i`total_ra=`expr $send_ra + $recv_ra`sendn=`ifconfig $eth_name | grep bytes | awk -F /( '{print $3}' | awk -F /) '{print $1}'`recvn=`ifconfig $eth_name | grep bytes | awk -F /( '{print $2}' | awk -F /) '{print $1}'`clearecho "Last second : Send rate: $send_r Bytes/sec Recv rate: $recv_r Bytes/sec Total rate: $total_r Bytes/sec"echo "Average value: Send rate: $send_ra Bytes/sec Recv rate: $recv_ra Bytes/sec Total rate: $total_ra Bytes/sec"echo "Total traffic after startup:Send traffic: $sendn Recv traffic: $recvn"done

该脚本(假设名叫traffic)默认显示eth0的流量,如果你有多个网卡,请将网卡作为参数传进去,比如:./traffic eth1

运行结果如下:

假设你出于某个原因而想嗅探网络上的实时HTTP Web流量(比如HTTP请求和回应)。比如说,你可能在测试网站服务器的试验性功能,或者在调试Web应用程序或充分利用REST的服务,抑或是你想要为PAC(代理自动配置)排查故障,或检查从某个网站偷偷下载的任何恶意软件文件。不管出于什么原因,嗅探HTTP流量大都有帮助,对系统管理员、开发人员、甚至最终用户来说都是如此。 虽然tcpdump等数据包嗅探工具广泛用于实时的数据包转储,你还是需要建立合理的过滤机制,以便只捕获HTTP流量;即使那样,通常无法很容易地在HTTP协议层面解读它们的原始输出。ngxtop等实时网站服务器日志分析工具提供了人类可读的实时网站流量痕迹,但只有在完全访问实时网站服务器日志的情况下才适用。 虽然拥有tcpdump之类的嗅探工具不错,但只针对HTTP流量。实际上,httpry正是我们所需的一款HTTP数据包嗅探工具。httpry可捕获网络上的实时HTTP数据包,并且以一种人类可读的格式,显示HTTP协议层面的内容。我们在本教程中将看看如何使用httpry来嗅探HTTP流量。

方法一、nload工具

查看参数帮助命令:

nload –help

-a :这个好像是全部数据的刷新时间周期,单位是秒,默认是300.

-i :进入网卡的流量图的显示比例最大值设置,默认10240 kBit/s.

-m :不显示流量图,只显示统计数据。

-o :出去网卡的流量图的显示比例最大值设置,默认10240 kBit/s.

-t :显示数据的刷新时间间隔,单位是毫秒,默认500。

-u :设置右边Curr、Avg、Min、Max的数据单位,默认是自动变的.注意大小写单位不同!

h|b|k|m|g h: auto, b: Bit/s, k: kBit/s, m: MBit/s etc.

H|B|K|M|GH: auto, B: Byte/s, K: kByte/s, M: MByte/s etc.

-U:设置右边Ttl的数据单位,默认是自动变的.注意大小写单位不同(与-u相同)!

Devices:自定义监控的网卡,默认是全部监控的,使用左右键切换。

如只监控eth0命令: nload eth0

方法二、iftop工具

1、iftop界面相关说明

界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。

中间的<= =>这两个左右箭头,表示的是流量的方向。

TX:发送流量

RX:接收流量

TOTAL:总流量

Cumm: 运行iftop到目前时间的总流量

peak:流量峰值

rates:分别表示过去 2s 10s 40s 的平均流量

2、iftop相关参数

常用的参数 《Linux就该这么学》

-i 设定监测的网卡,如:# iftop -i eth1

-B 以bytes为单位显示流量(默认是bits),如:# iftop -B

-n 使host信息默认直接都显示IP,如:# iftop -n

-N 使端口信息默认直接都显示端口号,如: # iftop -N

-F 显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0

-h(display this message),帮助,显示参数信息

-p 使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息

-b 使流量图形条默认就显示

-f 这个暂时还不太会用,过滤计算包用的

-P 使host信息及端口信息默认就都显示

-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M

进入iftop画面后的一些操作命令(注意大小写)

按h切换是否显示帮助

按n切换显示本机的IP或主机名

按s切换是否显示本机的host信息

按d切换是否显示远端目标主机的host信息

按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量

按N切换显示端口号或端口服务名称

按S切换是否显示本机的端口信息

按D切换是否显示远端目标主机的端口信息

按p切换是否显示端口信息

按P切换暂停/继续显示

按b切换是否显示平均流量图形条

按B切换计算2秒或10秒或40秒内的平均流量

按T切换是否显示每个连接的总流量

按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息

按L切换显示画面上边的刻度刻度不同,流量图形条会有变化

按j或按k可以向上或向下滚动屏幕显示的连接记录

按1或2或3可以根据右侧显示的三列流量数据进行排序

按<根据左边的本机名或IP排序

按>根据远端目标主机的主机名或IP排序

按o切换是否固定只显示当前的连接

按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!

按!可以使用Shell命令,这个没用过!没搞明白啥命令在这好用呢!

按q退出监控。

方法三、 ifstat

参数:

-a 监测能检测到的所有网络接口的状态信息

-z 隐藏流量是无的接口,例如那些接口虽然启动了但是未用的

-i 指定要监测的接口,后面跟网络接口名

时间:

-T 报告所有监测接口的全部带宽

-w 用指定的列宽,而不是为了适应接口名称的长度而去自动放大列宽

-W 如果内容比终端窗口的宽度还要宽就自动换行

-b 用kbits/s显示带宽而不是kbytes/s


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/431031.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-27
下一篇2023-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存