#!/usr/bin/env perl # Copyright (c) 2018 Artica Soluciones Tecnologicas S.L. use strict; use warnings; use Scalar::Util qw(looks_like_number); # Call netstat. my @out = `netstat -as 2>/dev/null`; return if ($? != 0 || $#out < 0); my $section = "[Unknown]"; foreach my $line (@out) { chomp($line); # New section. if ($line =~ m/\s*(.*):$/) { $section = $1; next; } # Parse the data. my ($module_name, $data) = ('', ''); if ($line =~ m/(\d+)\s+(.+)$/) { ($module_name, $data) = ($2, $1); } elsif ($line =~ m/\s*(.+):\s+(\d+)$/) { ($module_name, $data) = ($1, $2); } # No data or non-numeric data. next unless looks_like_number($data); print "<module>\n"; print " <name><![CDATA[[$section] $module_name]]></name>\n"; print " <type>generic_data_inc</type>\n"; print " <module_group>Networking</module_group>\n"; print " <data>$data</data>\n"; print "</module>\n"; }