非root用户如何在命令行监控网络流量?

非root用户如何在命令行监控网络流量?

我知道 gnome-system-monitor 可以显示带宽,即使由非 root 用户打开也是如此。但是 iftop、nethogs 等工具似乎都需要 root 才能工作。我如何允许普通用户执行 gnome-system-monitor 所做的操作?我要使用的应用程序是一个脚本,它每 n 秒输出一次 Mb/s 的上升/下降,用于传输到状态行。

答案1

您想要的数据可供所有人使用,时间为/proc/net/dev。但是,您必须自己计算带宽,方法是取两个值之间的增量和时间。

但请记住,这些计数器可能会溢出,具体取决于您的系统架构和内核版本。溢出可能发生在 2 32 -1(可到达只需几秒钟在千兆以太网上)或 2 64 -1(几乎无关)。

答案2

Dir/sys/class/net/${interface}/statistics/有你需要的一切。

基于此的 BASH 脚本:检查带宽

答案3

假设你正在谈论 nethogs。如果我们这样做,我们知道 nethogs 归 root 所有ls -l $(which nethogs)

现在我们需要做的就是更改 SUID 位,这样当运行 nethogs 时,它将以其所有者(即 root)的权限运行。运行:

sudo chmod u+s $(which nethogs)

而且它应该可以工作。

相关内容