Hallo,
ich veruche gerade die Ausgabe eines Perl-Scriptes über PHP zu verarbeiten, scheitere aber kläglich...
Das Perl-Script an sich arbeitet problemlos und wenn ich die PHP-Datei über die Shell aufrufe sehe ich auch die Ausgabe des Scriptes.
In PHP bekomme ich die Ausgabe aber weder über das Webinterface, noch über die Shell verarbeitet.
Folgenden Output produziert das Script:
ipc@nipc1:~/CoPS/Entwicklung/bin> perl /home/ipc/CoPS/Entwicklung/bin/get_interfaces_php_exporter.pl ce-2851-4T1DSU-4ESW-SP
WAN 1 VWIC-2MFT-T1 Serial0/0/0
LAN 1 GigabitEthernet GigabitEthernet0/0
CROSS 1 GigabitEthernet GigabitEthernet0/1
SWITCH 1 HWIC-4ESW FastEthernet0/2/0
SWITCH 2 HWIC-4ESW FastEthernet0/2/1
SWITCH 3 HWIC-4ESW FastEthernet0/2/2
SWITCH 4 HWIC-4ESW FastEthernet0/2/3
ipc@nipc1:~/CoPS/Entwicklung/bin>
Und dieser Teilcode sollte das verarbeiten:
[code]
$ifc_hash{'wan'}{'count'}=0; $ifc_hash{'lan'}{'count'}=0; $ifc_hash{'backup'}{'count'}=0; $ifc_hash{'cross'}{'count'}=0; $ifc_hash{'switch'}{'count'}=0;
$command="/usr/bin/perl /home/ipc/CoPS/Entwicklung/bin/get_interfaces_php_exporter.pl ".$ce_model;
$shell=popen($command, "w");
#DEBUG:
echo "\nCOMMAND:|".$command."|\n";
echo "Gettype:|".gettype($shell)."|\n";
echo "Read:|".fread($shell, 2096)."|\n";
echo "Print_R:|".print_r($shell)."|";
while (!feof($shell))
{
print "\nTEST!!!\n";
$line=fgets($shell,1024);
echo "\nLine=".$line."\n";
if (preg_match("/^\s*([a-z]+)\t(\d+)\t([a-z0-9-\/\\:]+)\t([a-z0-9-\/\\:]+)/i",$line,$ifc_array))
{
$type=strtolower($ifc_array[1]);
$nr=$ifc_array[2];
$ifc_hash{$type}{$nr}{'card'}=$ifc_array[3];
$ifc_hash{$type}{$nr}{'name'}=$ifc_array[4];
$ifc_hash{$type}{'count'}++;
$count_all++;
}
}
pclose($shell);
Zurück bekomme ich aber lediglich:
COMMAND:|/usr/bin/perl /home/ipc/CoPS/Entwicklung/bin/get_interfaces_php_exporter.pl ce-2851-4T1DSU-4ESW-SP|
Gettype:|resource|
Read:||
Resource id #2Print_R:|1|
Sieht jemand von euch den Fehler?
Danke!!