使用Perl以明文读取传入的Mbit / s

时间:2014-04-21 21:35:23

标签: perl unix networking

我找不到任何解决方案,我想在perl的接口上读取传入的Mbit / s。 我只是想让perl脚本报告Mbit / s为:9.66 这就好像我有一个9.66 Mbit / s的传入网络。

我尝试使用VNstat并解析出字符。但没有用。

1 个答案:

答案 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上,那么很遗憾,这将完全没有用。