mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-09 18:45:54 +02:00
speed.cgi: replave parsing of ip show output
latest ipfroute2 update change the output so this repkace it by reading /sys/class/net/*/statistics Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
# IPFire.org - A linux based firewall #
|
||||
# Copyright (C) 2007-2021 IPFire Team <info@ipfire.org> #
|
||||
# #
|
||||
# This program is free software: you can redistribute it and/or modify #
|
||||
# This program is free software: you c:an redistribute it and/or modify #
|
||||
# it under the terms of the GNU General Public License as published by #
|
||||
# the Free Software Foundation, either version 3 of the License, or #
|
||||
# (at your option) any later version. #
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
###############################################################################
|
||||
# #
|
||||
# IPFire.org - A linux based firewall #
|
||||
# Copyright (C) 2007 Michael Tremer & Christian Schmidt #
|
||||
# Copyright (C) 2007-2021 IPFire Twan <info@ipfire.org> #
|
||||
# #
|
||||
# This program is free software: you can redistribute it and/or modify #
|
||||
# it under the terms of the GNU General Public License as published by #
|
||||
@@ -25,28 +25,6 @@
|
||||
# high system load #
|
||||
###########################################OA##################################
|
||||
#
|
||||
# Returns the output of a shell command
|
||||
sub General__system_output($) {
|
||||
my @command = @_;
|
||||
my $pid;
|
||||
my @output = ();
|
||||
|
||||
unless ($pid = open(OUTPUT, "-|")) {
|
||||
open(STDERR, ">&STDOUT");
|
||||
exec { ${command[0]} } @command;
|
||||
die "Could not execute @command: $!";
|
||||
}
|
||||
|
||||
waitpid($pid, 0);
|
||||
|
||||
while (<OUTPUT>) {
|
||||
push(@output, $_);
|
||||
}
|
||||
|
||||
close(OUTPUT);
|
||||
return @output;
|
||||
}
|
||||
#
|
||||
# Function which will return the used interface for the red network zone (red0, ppp0, etc).
|
||||
sub General__get_red_interface() {
|
||||
|
||||
@@ -79,21 +57,16 @@ foreach $field (@fields) {
|
||||
}
|
||||
|
||||
my $interface = &General__get_red_interface();
|
||||
my @data_now = &General__system_output("ip", "-s", "link", "show", "$interface");
|
||||
|
||||
my $lastline;
|
||||
my $rxb_now = 0;
|
||||
my $txb_now = 0;
|
||||
foreach (@data_now) {
|
||||
if ( $lastline =~ /RX/ ) {
|
||||
@fields = split(/ /, $_);
|
||||
$rxb_now = $fields[4];
|
||||
} elsif ( $lastline =~ /TX/ ) {
|
||||
@fields = split(/ /, $_);
|
||||
$txb_now = $fields[4];
|
||||
}
|
||||
$lastline = $_;
|
||||
}
|
||||
open(RX, "/sys/class/net/$interface/statistics/rx_bytes") or die "Could not open /sys/class/net/$interface/statistics/rx_bytes";
|
||||
my $rxb_now = <RX>;
|
||||
close(RX);
|
||||
chomp $rxb_now;
|
||||
|
||||
open(TX, "/sys/class/net/$interface/statistics/tx_bytes") or die "Could not open /sys/class/net/$interface/statistics/tx_bytes";
|
||||
my $txb_now = <TX>;
|
||||
close(TX);
|
||||
chomp $txb_now;
|
||||
|
||||
my ($rx_kbs, $tx_kbs);
|
||||
my $rxb_diff = $rxb_now - $rxb_last;
|
||||
|
||||
Reference in New Issue
Block a user