#!/usr/bin/perl use strict; use warnings; use XML::LibXML; use LWP::UserAgent; #-- Parameter ---------------------------------------------------------# my $strTempFileName = '/tmp/wowza%s.xml'; my $strURL = 'http://%s:8086/connectioncounts.xml'; my $strLogger = '/var/log/wowzaGrabber.log'; my $strType = "Customer"; my $strStreamorCustomerElement = "ConnectionsCurrent"; my $pass = "passwd"; my $user = "user"; my $port = "port"; #----------------------------------------------------------------------# my $strKundeorStream = shift(@ARGV); my @strServerIp = @ARGV; my $httpGet = LWP::UserAgent->new; $httpGet->agent('ReportsBot/1.01'); for my $strItem (@strServerIp) { my $strUrl = sprintf($strURL,$strItem); my $strTempFile = sprintf($strTempFileName,$strItem); #-Get Datasource-----------------------------------------------------# $httpGet->credentials( "$strItem:$port", 'Wowza Media Systems', $user, $pass ); my $response = $httpGet->get($strUrl); if($response->is_error()) { warn("ERROR load XML: ($strItem) ". $response->status_line() ); next; } #-Write Tempfile-----------------------------------------------------# if( open(my $fh, '>', $strTempFile) ) { print $fh $response->decoded_content; close $fh; } else { warn("ERROR OPEN $strTempFile ($!)\n"); } #-MAIN---------------------------------------------------------------# my $output = parseXml( $response->decoded_content, $strKundeorStream, $strStreamorCustomerElement, $strType ); print $output; } ######################################################################## sub parseXml { my $strContent=shift; my $strKundeorStream = shift; my $strStreamorCustomerElement = shift; my $strType = shift; my $xmlStruct = XML::LibXML->load_xml(string => $strContent); unless($xmlStruct) { warn("ERROR PARSE XML!"); return ''; } my $xmlRootElement = $xmlStruct -> getDocumentElement(); my $xmlRootElementName = $xmlRootElement -> getName(); my $strLine = ""; foreach my $ChildElement ($xmlRootElement->getElementsByTagName("Application")) { my @arrNodes = $ChildElement->getElementsByTagName("Name"); if ($arrNodes[0]->getFirstChild->getData eq $strKundeorStream) { my @arrNodes = $ChildElement->getElementsByTagName($strStreamorCustomerElement); $strLine = $arrNodes[0]->getFirstChild->getData; last; } } return $strLine; }