我找不到任何解决方案,我想在perl的接口上读取传入的Mbit / s。 我只是想让perl脚本报告Mbit / s为:9.66 这就好像我有一个9.66 Mbit / s的传入网络。
我尝试使用VNstat并解析出字符。但没有用。
答案 0 :(得分:0)
如果你在Linux系统上,/ sys /目录通常有这样的子目录:
/sys/class/net/eth0/statistics
如果您可以始终如一地依赖现有(/ sys /在内核2中添加,那么您应该没问题),该目录中的“文件”包含可用于在界面上构建某些统计信息的信息,包括传入(rx)字节到该接口。
这是一个极粗略的例子:
use List::Util qw(sum);
my @bytes;
for(1..11) {
open(FH, "<", "/sys/class/net/eth0/statistics/rx_bytes") or die $@;
push(@bytes, <FH>);
sleep 1;
close(FH);
}
my @bytes_per_second;
for(1..10) {
my $diff = ($bytes[$_] - $bytes[($_ - 1)]);
push(@bytes_per_second, $diff);
}
print sum(@bytes_per_second)/@bytes_per_second;
上面的代码将为您提供每秒(大致)传入数据到名为“eth0”的接口的平均[以字节为单位]。有很多很好的方法可以让我觉得这个演示没有必要,但是包括使用计时器和以不同方式读取文件。
希望这会为您提供一些可用的东西,但如果您甚至不在Linux上,那么很遗憾,这将完全没有用。