如何在Bash脚本中获取特定IP的当前带宽速率?
如何在Bash脚本中获取特定IP的当前带宽速率?
我来帮你搞定这个需求!你已经在用tcptrack查看实时带宽了,其实只要给它加几个参数,就能让它输出适合脚本处理的文本数据;另外还有几个专门适合脚本调用的工具,下面给你逐个说明:
1. 用你熟悉的tcptrack适配脚本
tcptrack默认是交互式界面,但加上-t参数就能切换到文本模式,直接把输出打印到标准输出,这样就能用管道工具提取总带宽数据了。比如针对目标IP 192.168.1.100,可以用这个命令:
tcptrack -i ens3 -t src or dst 192.168.1.100 | awk '/Total/ {print $3, $4}'
这个命令会输出类似1.45 MB/s的总带宽数值,你可以在脚本里直接捕获这个结果,或者进一步处理成纯数字(比如去掉单位)。
2. 用iftop更灵活地获取收发速率
iftop是另一个常用的流量监控工具,天生支持文本模式输出,还能单独提取特定IP的发送/接收带宽。比如采样1秒后输出目标IP的流量数据:
iftop -i ens3 -t -s 1 -n | awk '/192.168.1.100/ {print "发送速率:", $6, "接收速率:", $8}'
参数说明:
-t:文本模式,不启动交互界面-s 1:采样1秒后自动退出-n:不解析域名,直接显示IP,避免延迟
执行后会得到类似发送速率: 987 KB/s 接收速率: 1.2 MB/s的结果,非常适合脚本里做统计或判断。
3. 用bmon输出结构化数据(可选)
如果需要更结构化的输出格式方便脚本解析,可以试试bmon。它支持输出机器可读的格式,比如:
bmon -p ens3 -o format:'fmt:rxrate:%R,txrate:%T' | grep -A1 192.168.1.100
这个命令会输出目标IP的接收(rxrate)和发送(txrate)速率,格式规整,适合复杂脚本处理。
备注:内容来源于stack exchange,提问作者pirojnoe
相关产品推荐
相关产品推荐

