Die folgende Funktion meldet sich bei einem Router an, führt einen Befehl zum Abrufen des IPsec-Sitzungsstatus aus und gibt den Schnittstellennamen und die IP-Adresse als Zeichenfolge zurück. Anstatt eine Zeichenfolge zurückzugeben, möchte ich, dass die Funktion ein Hash-Array zurückgibt. Kann mir da jemand helfen?Array von Hashes in Perl zurückgeben
sub cryptoSessionStatus {
my ($self,$interface) = @_;
my $status = 0;
my $peer_ip = 0;
#command to check the tunnel status
my $cmd = 'command goes here ' . $interface;
#$self->_login();
my $tunnel_status = $self->_login->exec($cmd);
#Regex to match the 'tunnel status' and 'peer ip' string in the cmd output
#Session status: DOWN/UP
#Peer: x.x.x.x
foreach my $line ( $tunnel_status) {
if ($line =~ m/Session\s+status:\s+(.*)/) {
$status = $1;
}
if ($line =~ m/Peer:\s+(\d+.\d+.\d+.\d+)/) {
$peer_ip = $1;
}
}
return ($status,$peer_ip);
}
Funktionsaufruf:
my $tunnel_obj = test::Cryptotunnels->new('host'=> 'ip');
my $crypto_sessions = $tunnel_obj->cryptoSessionStatus("tunnel1");
Meinst du, du willst, dass es einen Hash von Status => Ip gibt? Und du möchtest, dass das zurückkommt? –
@Ed Dunn möchte ich die ip und den Status als Array von Hashes Array zurückgegeben werden = ( { ip => "x.x.x.x", status => "nach oben", } ); – virat
Wie sieht die Ausgabe aus? Können wir eine Probe bekommen? –