Thread skript-fehlersuche
(23 answers)
Opened by turbo at 2011-11-25 15:24
hallo,bin in sachen programmierung leider kein fachmann weßhalb mein problem wahrscheinlich nur ein banaler fehler im skript ist.aber ich find ihn eben nicht .
mein skript soll die status-xml mehrerer medienserver abfragen und mir den inhalt des tags connectionscurrent (user-zahl) ausgeben. führe ich das skript so wie es ist aus, bekomme ich zwar userzahlen, aber immer die selbe! die ip´s landen aber korrekt in der foreach schleife.. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 #!/usr/bin/perl -w use strict; use XML::LibXML; use Cwd; use LWP::UserAgent; use URI::Escape; #-------- Parameter --------# my $strLine; my $strWorkingDir = cwd; my $strLogger = '/var/log/wowzaGrabber.log'; my $strType = "Customer"; my $strStreamorCustomerElement = "ConnectionsCurrent"; my $strKundeorStream = $ARGV[0]; my $strServerIp_1 = $ARGV[1]; my $strServerIp_2 = $ARGV[2]; #my $strServerIp_3 = $ARGV[3]; #my $strServerIp_4 = $ARGV[4]; #my $strServerIp_5 = $ARGV[5]; #my $strServerIp_6 = $ARGV[6]; #my $strServerIp_7 = $ARGV[7]; #my $strServerIp_8 = $ARGV[8]; #my $strServerIp_9 = $ARGV[9]; #my $strServerIp_10 = $ARGV[10]; #-------- Server IPs in Array schreiben ------# my @IPs = ( $strServerIp_1, $strServerIp_2, # $strServerIp_3, # $strServerIp_4, # $strServerIp_5, # $strServerIp_6, # $strServerIp_7, # $strServerIp_8, # $strServerIp_9, # $strServerIp_10 ); #--- Parser ----------------------------------# my $xmlParser = XML::LibXML->new(); my $httpGet = LWP::UserAgent->new; foreach my $strItem(@IPs) { #my $xmlParser = XML::LibXML->new(); #my $httpGet = LWP::UserAgent->new; my $strUrl = "http://$strItem:8086/connectioncounts.xml"; my $strTempFile = "/tmp/wowza$strItem.xml"; #-Get Datasource---------------------------------------------------------# $httpGet->agent('ReportsBot/1.01'); $httpGet->credentials( "$strItem:port", 'Wowza Media Systems', 'user' => 'passwort' ); my $response = $httpGet->get($strUrl); #-Write Tempfile----------------------------------------------------------# open FILE, ">/tmp/wowza$strItem.xml" ; print FILE ($response->decoded_content); close FILE; #-MAIN-------------------------------------------------------------------# #my $output = parseXml($strKundeorStream,$strStreamorCustomerElement,$strType); print parseXml($strKundeorStream,$strStreamorCustomerElement,$strType); sub parseXml { my($strKundeorStream,$strStreamorCustomerElement,$strType) = @_; my $xmlStruct = $xmlParser -> parse_file($strTempFile)or die; my $xmlRootElement = $xmlStruct -> getDocumentElement(); my $xmlRootElementName = $xmlRootElement -> getName(); my @arrNodes; my $strLine = ""; my @arrElement = $xmlRootElement->getElementsByTagName("Application"); foreach my $strChild (@arrElement) { @arrNodes = $strChild->getElementsByTagName("Name"); if ($arrNodes[0]->getFirstChild->getData eq $strKundeorStream) { @arrNodes = $strChild->getElementsByTagName($strStreamorCustomerElement); $strLine .= $arrNodes[0]->getFirstChild->getData; return $strLine; print $strLine ; } } } } danke! modedit Editiert von pq: code-tags repariert Last edited: 2011-11-25 15:45:24 +0100 (CET) |