Hi leute, bin gerade dabei was zu programmieren um die übertragenen Bytes auf dem interface auszulesen unter Linux.
Das steht unter /proc/net/dev
Nur das Problem ist, wie kann ich das gescheit aufsplitten? Weil die Werte schwimmen irgendwie immer ma wieder hin und her.
Grml...
Hier mein Code, den ich bisher habe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/perl
use strict;
use Tie::File;
use Getopt::Long;
use vars qw($opt_I);
my $file = "/proc/net/dev";
my $new_in_bytes=0;
my $new_out_bytes=0;
my $completestring;
my @splitinterface;
my @dataset_in;
my @dataset_out;
my @dataset_out_split;
Getopt::Long::Configure('bundling');
GetOptions
("I=s" => \$opt_I, "Interface" => \$opt_I);
open(my $FH, $file) or die "$!\n";
while (<$FH>){
$completestring = $_ if ($_=~ /$opt_I/);
@splitinterface = split(/:/,$completestring,2);
@dataset_in = split(/ /,@splitinterface [1]);
$new_in_bytes = @dataset_in[0];
@dataset_out = split(/0 /,@splitinterface [1]);
if (@dataset_out[6] =~ '\s') {
@dataset_out_split = split(/\s/,@dataset_out[5]);
$new_out_bytes = @dataset_out_split[5];
print "\n@dataset_out_split\n";
} else {
$new_out_bytes = @dataset_out[6];
}
}
#print "$new_in_bytes\n$new_out_bytes\n";