script wird von Cron ausgeführt, aber einige Befehle nicht

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von kolvar, 08.05.2007.

  1. kolvar

    kolvar Mitglied

    Dabei seit:
    03.04.2006
    Beiträge:
    41
    Zustimmungen:
    0
    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:


    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
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Wolfgang, 08.05.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Sorry, aber das hatten wir jetzt schon dreimal die Woche.
    Wessen cronjob ist das?
    root?
    Cronjob-Skripte laufen in einen noninteractiven Shell, ohne Umgebungsvariablen des Users!

    Wenn das Script als root läuft, dann startet es wohl in der Verzeichnisebene von root.
    Dort liegt vermutlich keine apachectl oder umount.
    Merkst du was?
    Also solltest du die PATH setzen (in der crontab, oder im Script), oder absolute Pfade verwenden.

    Fehlermeldungen solltest du dir per Mail (auch im Kopf von crontab konfigurierbar) zusenden lassen. Dann bekommst du auch die Fehlermeldungen mit.

    ssh root@192.168.2.10 erwartet keine Passwort?
    Wenn ja, dann regel das über Pubkey und config.


    Gruß Wolfgang
     
  4. kolvar

    kolvar Mitglied

    Dabei seit:
    03.04.2006
    Beiträge:
    41
    Zustimmungen:
    0
    Danke, dass du trotzdem geantwortet hast.

    Die ganze Pubkeygeschichte habe ich schon eingebaut (wie gesagt, dass Script läuft ja von der Shell, wenn per Hand gestartet)
     
Thema:

script wird von Cron ausgeführt, aber einige Befehle nicht

Die Seite wird geladen...

script wird von Cron ausgeführt, aber einige Befehle nicht - Ähnliche Themen

  1. Shell Script wird nicht ausgeführt

    Shell Script wird nicht ausgeführt: Hallo, ich bräuchte mal einen kleinen Denkanstoß. Meine Erfahrungen mit cron und Shellscripts sind eher rudimentär. Ein kleiner Einzeiler...
  2. script wird von cronjob nicht korrekt ausgeführt - Centos 5

    script wird von cronjob nicht korrekt ausgeführt - Centos 5: Guten Morgen, und hallo ins Forum. Ich habe ein Problem mit meinem Sicherungsserver: ich möchte zur täglichen inkrimentellen Sicherung...
  3. script wird als cronjob anders ausgeführt

    script wird als cronjob anders ausgeführt: Hallo Leute Ich bin neu hier und Scriptanfänger, habe aber von Programmieren (vorw. JAVA) berufliche Erfahrung. Nun zum Problem; ich hab...
  4. Webinterface für Gameserver/Shellscript wird nicht ausgeführt

    Webinterface für Gameserver/Shellscript wird nicht ausgeführt: Guten Abend, ich weis die Uhrzeit ist unmenschlich, aber ich sitz jetzt seit 4h dran und komm auf keine Lösung. Problem ist folgendes: Habe...
  5. kann man den namen eines shell-scripts, das gerade ausgeführt wird, ausdrucken?

    kann man den namen eines shell-scripts, das gerade ausgeführt wird, ausdrucken?: hallo!! kann man den namen eines shell-scripts, das gerade ausgeführt wird, ausdrucken? ich suche etwas analoges zu '$0', nur eben für das...