1

我有一个有点奇怪的问题,我真的希望有人可以帮助解决这个问题:

我上大学,这里的无线网络每周都会发出一定的登录配额(我的是 2GB)。这意味着每周,我只能访问 2GB 的 Internet - 我的上传和下载总计不得超过 2GB(我可以访问告诉我剩余配额的网页)。我通常被允许一些宽限 KB,但我们不要考虑这个问题。

我的笔记本电脑运行 Ubuntu 并安装了 conky 系统监视器,我已将其配置为显示(除其他外)我剩余的无线配额。最初,我已经点击了网页grep获得了剩余配额。但是,由于我的 conky 每 5 秒刷新一次,并且我的无线连接时间超过 12 小时,因此对网页本身的检查会杀死我的无线配额。

为了解决这个问题,我想我可以做以下两件事之一:

  1. 访问网页的频率要低得多,这样就不会破坏我的配额。
  2. 监控我的无线网卡上的无线流量并不断从 2GB 中减去它

(1) 是我到目前为止所做的:我设置了一个 cron 作业来每分钟访问一次网页并将结果存储在我的本地文件系统上的文件中。Conky 然后读取这个文件——不需要它访问网页;由于 conky,无线配额不会丢失。

这个解决方案是 12 倍的胜利,但这仍然不够。但是,我是实时数据的粉丝,不会进一步降低 cron 频率。

所以,我唯一的其他解决方案是(2)。这是我发现wireshark的时候,它是命令行版本的tshark。现在,这是我认为我应该做的:

  1. 守护 tshark
  2. 设置 tshark 以监控流经我的无线网卡的流量(以 KB 或 B 或 MB 为单位 - 我可以稍后转换)
  3. 继续将此交通信息附加到 file1
  4. 将file1中的流量信息相加,从2GB中减去。将结果存储在 file2 中
  5. 将 conky 设置为读取 file2 - 这是我剩余的配额
  6. 设置一个 cron 作业以在每周一上午 6.30 删除/erase_the_contents_of file1(那是每周配额重置的时间)

最后,我的问题:

  1. 你有没有更好的方法来做到这一点?
  2. 如果没有,我该如何设置 tshark 让它做我想做的事?我可能需要哪些其他脚本?

如果有帮助,网站会告诉我我的剩余配额是 KB

我已经看过tshark 手册页,不幸的是,这对我来说毫无意义,因为我是 network-n00b。

先感谢您。

4

1 回答 1

0

有趣的问题。我没有使用tshark的经验,所以我个人会使用iptables来解决这个问题。

看着:

[root@home ~]# iptables -nvxL | grep -E "Chain (INPUT|OUTPUT)"
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
Chain OUTPUT (policy ACCEPT 9763462 packets, 1610901292 bytes)

我们看到它iptables记录了通过每个链的字节数。因此,大概可以通过以下方式监控您的带宽使用情况:

  1. 当您的系统启动时,从网络上检索您的剩余配额
  2. 将iptables中的字节计数归零(使用该-z选项)
  3. 每 X 秒,从iptables获取使用量并从配额中扣除

以下是一些使用 iptables 进行 IP 记帐的示例。

注意事项

这种方法有一些缺点。首先,您需要 root 访问权限才能运行iptables,这意味着您需要 conky 以 root 身份运行,或者运行一个将当前值写入 conky 有权访问的文件的 cron 守护程序。

此外,并非所有 INPUT/OUTPUT 数据包都可能计入您的带宽分配,例如 Intranet 访问、DNS 等。可以通过匹配它们并将它们放置在单独的iptables链中来仅过滤掉相关连接(上面给出的链接中的示例)。一种更简单的方法(如果差异不是太大)是偶尔从网络上获取您的实时配额,重置您的值并重新开始。

当您拥有复杂或使用自定义链的现有iptables规则时,它也会变得有点棘手。然后,您将需要一些iptables知识来检索正确的值。

于 2011-02-07T10:40:28.367 回答