Thread RegEx für "ip addr show" (14 answers)
Opened by cbxk1xg at 2021-02-23 16:07

cbxk1xg
 2021-02-23 21:14
#193141 #193141
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Das zeilenweise Auslesen der Pipe ist der richtige Ansatz. Danke.

Ich habe das in meiner Catalyst App jetzt folgendermaßen gelöst.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
my $cmd = "ip addr show";
my %interfaces;

open my $pipe, '-|', $cmd or die "(E) could not execute: $cmd: $!\n";
my $device;
        while ( my $line = <$pipe> ) {

                if ( $line =~ m/^\d+:\s+([^:]+): <([^>]+)>/ ) {
                                $device = $1;
                                $interfaces{$device}->{abilities} = $2;
                }

                while ( $line =~ m/(mtu|state|qlen|brd?) (\S+)/g ) {
                                $interfaces{$device}->{$1} = $2;
                }
        }
close $pipe;

# stash für JSON view
$c->stash->{networkDevices} = \%interfaces;

Last edited: 2021-02-23 21:17:13 +0100 (CET)

View full thread RegEx für "ip addr show"