Jörg Reinholz: Perl-Script zum anlegen Virtueller Hosts

Beitrag lesen

Deinen Ausführungen nach müsste es ergo an folgendem Abschnitt liegen:

my $ensite = qx (/usr/sbin/a2ensite $vh_name_actdeactdest);  
        print "Variable ensite:". $ensite;  
        if ($ensite =~ /Enabling/) {  
            print "Der Virtuelle Host <strong>$vh_name_actdeactdest</strong> wurde erfolgreich aktiviert.";  
            qx ("/etc/init.d/apache2 reload");  
        }  
        else {  
            print "<font color='red'>Fehler: Der Virtuelle Host <strong>$vh_name_actdeactdest</strong> konnte nicht aktiviert werden.</font>";  
        }

Überprüfe also die Ausgaben von /usr/sbin/a2ensite. Und zwar darauf, ob es die erwartete Ausgabe macht - Es soll laut Skript den String "Enabling" enthalten. Auch für uns wären GENAU diese Ausgaben von höchsten Interesse.

Ich will nicht verschweigen, dass das Skript etwas seltsam ist. Normalerweise würde man nicht per se die Ausgaben von /usr/sbin/a2ensite auswerten (das kann man dem fehlerfall vorbehalten).

Bei mir sieht das in der Shell im Fehlerfall so aus:

fastix@trainer:~$ sudo bash
root@trainer:~# txt=a2ensite 010\_dummy 2>&1;echo $?
1
root@trainer:~# echo $txt
ERROR: Site 010_dummy does not exist!
root@trainer:~#

Im Erfolgsfall:

root@trainer:~# txt=a2ensite 009\_src.selfhtml.org 2>&1;echo $?
0
root@trainer:~#

Passe also Dein Skript an und werte aus, ob a2ensite Konfigurationsname einen Fehler wirft. ($? ist im Fehlerfall verschieden von 0) oder keinen. Den Text auszuwerten ist immer dann fragwürdig, wenn man den gar nicht haben will - der kann sich ändern. ich vermute aber nicht, dass es hier daran liegt. Ich denke, a2ensite stolpert wahrscheinlich über Rechte.

Übrigens: Auch das Neuladen der Apache-konfiguration muss auf die gleiche Weie überwacht werden, der Neustart ganz am Ende des Skriptes ist höchst unnötig.

Jörg Reinholz