如何从网络接口获取已使用的带宽量并将其存储在变量中?

如何从网络接口获取已使用的带宽量并将其存储在变量中?

我安装了 iftop 并且我想将总值放到一个变量上作为示例:

iftop -i mydevice 

                12.5Kb          25.0Kb          37.5Kb          50.0Kb    62.5Kb
└───────────────┴───────────────┴───────────────┴───────────────┴───────────────
sip                        => 188.241.227.198             2.53Kb  1.27Kb  1.27Kb
                           <=                            2.63Kb  1.31Kb  1.31Kb
















────────────────────────────────────────────────────────────────────────────────
TX:             cum:    648B    peak:   2.53Kb  rates:   2.53Kb  1.27Kb  1.27Kb
RX:                     673B            2.62Kb           2.63Kb  1.31Kb  1.31Kb
TOTAL:                 1.29KB           5.16Kb           5.16Kb  2.58Kb  2.58Kb

好吧,我可以把它作为文本放在这里是的!但我没有

nohup iftop -i enp0s26y7a6 > iftop_output.txt &

当我使用cat文件时,它显示了我保存的内容,但当我用 打开文件时nano,它显示了很多我看不懂的代码。我尝试在该代码上搜索“总”金额,但不知道如何将该金额放入变量中。

答案1

所有必要的信息都在伪文件中/proc/net/dev,您可以在脚本中读取/搜索。例如,要在 bash 脚本中获取以太网接口 (enpo-something) 的计数:

read _ received _ _ _ _ _ _ _ transmitted _ < <(grep enp0 /proc/net/dev)

答案2

我确实进行了安装vnstat并使用了相同的流程,我解释一下:

vnstat 是一个守护进程,它一直在存储网络使用情况,并且在查询示例中非常完整,我感兴趣的是了解已使用的带宽总量,一个特定接口,在安装 vnstat 后,我​​们将其称为 mydevice,启动它,一段时间后运行,vnstat 正在存储数据!

vnstat -i mydevice  

Database updated: Wed Aug 19 11:38:48 2020

   mydevice since 08/18/2020

          rx:  9.63 MiB      tx:  6.73 MiB      total:  16.37 MiB

   monthly
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
       Aug '20      9.63 MiB |    6.73 MiB |   16.37 MiB |    0.08 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated        14 MiB |       9 MiB |      23 MiB |

   daily
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
     yesterday      1.63 MiB |     873 KiB |    2.48 MiB |    0.24 kbit/s
         today      8.00 MiB |    5.88 MiB |   13.88 MiB |    2.71 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated        16 MiB |      10 MiB |      26 MiB |

然后,你就得到了给定时刻使用的带宽总量

estimated        16 MiB |      10 MiB |      26 MiB |

第三列,我认为

vnstat -i mydevice -d 2>&1 | grep estimated | cut -d '|' -f 3

这就是印刷品

26 MiB

就是这样,然后你可以用它做任何你需要或想要做的事情!此外,vnstat 有一个非常有趣的选项,让你知道每天安装的带宽,我刚刚安装,但它非常好

 vnStat 1.15 by Teemu Toivola <tst at iki dot fi>

         -q,  --query          query database
         -h,  --hours          show hours
         -d,  --days           show days
         -m,  --months         show months
         -w,  --weeks          show weeks
         -t,  --top10          show top 10 days
         -s,  --short          use short output
         -u,  --update         update database
         -i,  --iface          select interface (default: eth0)
         -?,  --help           short help
         -v,  --version        show version
         -tr, --traffic        calculate traffic
         -ru, --rateunit       swap configured rate unit
         -l,  --live           show transfer rate in real time

See also "--longhelp" for complete options list and "man vnstat".

相关内容