K
kolvar
Mitglied
Moin moin,
nachdem ich jetzt einige Zeit mit dem Script rumgewürgt habe (und ich gebe gerne zu, dass ich kein Shell-Script spezialist bin) hat mich nun der Frust doch gepackt und ich frage lieber nach:
Ausgangssituation: zwei Debian Server, die beide apache (der eine 1.3, der andere 2), samba und einen Mount laufen haben, auf dem der jeweilige DocRoot des apache liegt.
Die verzeichnisse, die gemounted werden, liegen auf einem weiteren Server (ein openE gesteuertes Monstrum). Wenn der OpenE-Server runtergefahren wird, hängen sich regelmäßig die beiden Debians auf, weswegen jetzt ein Script fällig ist, über den das ganze umount-gerammel (mit vorhirigem ausschalten des Samba und Apache) durchgeführt werden soll.
So, klein-kolvar dachte sich nun, schreibe ich doch mal ein kleines Shellscript, mit dem man vom einen server aus den anderen gleich mit ausschalten können soll. Erschwerend kam noch hinzu, dass dies von der Weboberfläche über ein php-script gehen soll. Nach ein wenig rumgezuzzel mit php (safe-mode muss aus bleiben, weswegen es da schon Einschränkungen gibt) klappte dass pure ausschalten von php aus schon mal nicht (Script wurde ausgeführt mit der hübschen Fehlermeldung, dass apache nicht gestoppt werden kann -- macht ja auch irgendwie sinn, ist aber nicht hilfreich an dieser Stelle).
Habe ich mir in meinem kranken hirn also eine andere Lösung überlegt: php schreibt einfach eine Datei, ein Cronjob führt ein runterfahrscript aus, wenn diese Datei vorhanden ist (nicht hauen, bitte --> wenn mir jemand eine Möglichkeit sagt, wie ich apache über php stoppen kann (und samba) dann mache ich das liebend gerne)
Script sieht wie folgt aus:
cron tut seine Arbeit und führt tatsächlich dieses Script aus. Das merke ich daran, dass die godown.txt tatsächlich gelöscht wird. Aber die Server laufen weiter. Wenn ich es einfach per Hand als root starte, macht es all das, was ein gutes script tun sollte. Daher gehe ich dann ja schon von irgendwelchen Rechten aus, aber wie sage ich es meinem Cron?
Oder ist es irgendwas anderes? Was mache ich falsch?
(und bitte haut mich nicht ... auch nicht verbal)
Danke im Voraus
nachdem ich jetzt einige Zeit mit dem Script rumgewürgt habe (und ich gebe gerne zu, dass ich kein Shell-Script spezialist bin) hat mich nun der Frust doch gepackt und ich frage lieber nach:
Ausgangssituation: zwei Debian Server, die beide apache (der eine 1.3, der andere 2), samba und einen Mount laufen haben, auf dem der jeweilige DocRoot des apache liegt.
Die verzeichnisse, die gemounted werden, liegen auf einem weiteren Server (ein openE gesteuertes Monstrum). Wenn der OpenE-Server runtergefahren wird, hängen sich regelmäßig die beiden Debians auf, weswegen jetzt ein Script fällig ist, über den das ganze umount-gerammel (mit vorhirigem ausschalten des Samba und Apache) durchgeführt werden soll.
So, klein-kolvar dachte sich nun, schreibe ich doch mal ein kleines Shellscript, mit dem man vom einen server aus den anderen gleich mit ausschalten können soll. Erschwerend kam noch hinzu, dass dies von der Weboberfläche über ein php-script gehen soll. Nach ein wenig rumgezuzzel mit php (safe-mode muss aus bleiben, weswegen es da schon Einschränkungen gibt) klappte dass pure ausschalten von php aus schon mal nicht (Script wurde ausgeführt mit der hübschen Fehlermeldung, dass apache nicht gestoppt werden kann -- macht ja auch irgendwie sinn, ist aber nicht hilfreich an dieser Stelle).
Habe ich mir in meinem kranken hirn also eine andere Lösung überlegt: php schreibt einfach eine Datei, ein Cronjob führt ein runterfahrscript aus, wenn diese Datei vorhanden ist (nicht hauen, bitte --> wenn mir jemand eine Möglichkeit sagt, wie ich apache über php stoppen kann (und samba) dann mache ich das liebend gerne)
Script sieht wie folgt aus:
Code:
#!/bin/bash
if [ -e "/var/serverdown/godown.txt" ]
then
apachectl stop;
/etc/init.d/samba stop;
rm -rf /var/serverdown/godown.txt;
umount /var/virtual;
ssh root@192.168.2.10 '/etc/init.d/apache2 stop;/etc/init.d/samba stop;umount
fi
cron tut seine Arbeit und führt tatsächlich dieses Script aus. Das merke ich daran, dass die godown.txt tatsächlich gelöscht wird. Aber die Server laufen weiter. Wenn ich es einfach per Hand als root starte, macht es all das, was ein gutes script tun sollte. Daher gehe ich dann ja schon von irgendwelchen Rechten aus, aber wie sage ich es meinem Cron?
Oder ist es irgendwas anderes? Was mache ich falsch?
(und bitte haut mich nicht ... auch nicht verbal)
Danke im Voraus