#!/usr/bin/perl -w use strict; use CGI; use JSON::XS; my $q = new CGI; print $q->header('text/plain'); open( STAT, 'vnstat --dumpdb |' ) || die "Can't run vnstat!"; my $if = { 'globals' => { } }; my $key = 'globals'; foreach my $line( ) { chomp $line; my @s = split(';', $line ); if( $s[0] eq 'interface' ) { $key = $s[1]; defined($if->{$key}) or $if->{$key} = {}; } elsif( $s[0] =~ /^[dmth]$/ ) { my $tag = shift @s; defined($if->{$key}->{$tag}) or $if->{$key}->{$tag} = [ ]; push @{$if->{$key}->{$tag}}, [@s]; } else { $if->{$key}->{$s[0]} = $s[1]; } } close( STAT ); print encode_json $if;