From: Arne Fitzenreiter Date: Mon, 25 Oct 2021 10:58:10 +0000 (+0200) Subject: speed.cgi: replave parsing of ip show output X-Git-Tag: v2.27-core161~2^2~26 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a8dd6e98ba04b8dc0e7642beab16c9efeaee6e33;p=ipfire-2.x.git 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 --- diff --git a/config/qos/makeqosscripts.pl b/config/qos/makeqosscripts.pl index 0694bb78cf..878e4bb43e 100644 --- a/config/qos/makeqosscripts.pl +++ b/config/qos/makeqosscripts.pl @@ -4,7 +4,7 @@ # IPFire.org - A linux based firewall # # Copyright (C) 2007-2021 IPFire Team # # # -# 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. # diff --git a/html/cgi-bin/speed.cgi b/html/cgi-bin/speed.cgi index 651c3c0b31..d4b83df4f6 100644 --- a/html/cgi-bin/speed.cgi +++ b/html/cgi-bin/speed.cgi @@ -2,7 +2,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # +# Copyright (C) 2007-2021 IPFire Twan # # # # 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 () { - 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 = ; +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 = ; +close(TX); +chomp $txb_now; my ($rx_kbs, $tx_kbs); my $rxb_diff = $rxb_now - $rxb_last;