testskript ob apache noch läuft?

Apache, Lighttpd, nginx, Cherokee
chrisigleich
Posts: 41
Joined: 2003-07-22 00:00
Location: Koblenz
 

testskript ob apache noch läuft?

Post by chrisigleich »

hi,
ich habe auch die problem das der apache hin und wieder abstürtzt
rcapache status => dead,
jetzt wollte ich mir ein skript schreiben was alle 5 min schaut ob der apache noch läuft, so in der art

if rcapache status | grep running; then
#tu nichts
else
rcapache restart;
fi

wenn ich das aber als cron einrtcihte habe ich das problem das
der user dameon ja keine zugriffsrechte bensitzt.
Hat vielleicht einer ein passendes skript bereit und kann das mal hier posten oder mir sagen wie sowas auszusehen hat.

Danke christian
krogoth
Posts: 57
Joined: 2003-04-11 01:43
Location: Alfter bei Bonn
 

Re: testskript ob apache noch läuft?

Post by krogoth »

Code: Select all

#!/bin/bash

if [ `ps -ef | grep -v "grep" | grep -c "httpd"` -gt 0 ]; then
  echo "apache is running...";
else
  echo "apache is dead..";
fi
also ich faend es mit dem befehl einfacher und sicherer, denn wenn der apache nicht im speicher ist, laeuft er auch nicht.

der benutzer daemon? als welcher user wird dein crond ausgefuehrt?
chrisigleich
Posts: 41
Joined: 2003-07-22 00:00
Location: Koblenz
 

Re: testskript ob apache noch läuft?

Post by chrisigleich »

wie kann ich das herausfinden welcher benutzer das ist j?
und wie bekomme ich das mit den rechten hin das er rcapache ausführen kann das befindet sich ja im verzeichnis /usr/sbin ?
das system läuft unter suse 8.1 ist ein 1und1 rootserver
christian
alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover
Contact:
 

Re: testskript ob apache noch läuft?

Post by alexander newald »

man musst auch noch den Fall betrachten, in dem der Apache nicht mehr auf Anfragen antwortet, aber noch ein aufgehängter Prozess läuft
chrisigleich
Posts: 41
Joined: 2003-07-22 00:00
Location: Koblenz
 

Re: testskript ob apache noch läuft?

Post by chrisigleich »

der user heisst daemon und die gruppe ist auch daemon
wie kriege ich das jetzt hin das der rcapache ausführen kann ?

Icha habe es mal versucht indem ich bei dem skrip was den test ausführt
das setuid bit setze, dann kam aber der fehler das er startproc oder killproc oder so nicht aufführen kann?
Hat da jemand sonst noch eine idee?

@ alexander hast du eine idee wie ich das testen kann?


christian
krogoth
Posts: 57
Joined: 2003-04-11 01:43
Location: Alfter bei Bonn
 

Re: testskript ob apache noch läuft?

Post by krogoth »

Alexander Newald wrote:man musst auch noch den Fall betrachten, in dem der Apache nicht mehr auf Anfragen antwortet, aber noch ein aufgehängter Prozess läuft
ok, hast recht:

Code: Select all

#!/bin/bash

if [ `ps -ef | grep -v "grep" | grep -c "httpd"` -gt 0 ]; then
  if [ `wget "http://eineurlaufdeinemserver/" --delete-after 2>&1 | grep -c "200 OK"` -eq 0 ]; then
    echo "apache has died...";
    killall httpd
    sleep 10;
    killall -9 httpd;
    rcapache start;
  fi
else
  echo "apache dead..";
  rcapache start;
fi
alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover
Contact:
 

Re: testskript ob apache noch läuft?

Post by alexander newald »

@chrisigleich: Die Lösung von krogoth sieht gut aus.
chrisigleich
Posts: 41
Joined: 2003-07-22 00:00
Location: Koblenz
 

Re: testskript ob apache noch läuft?

Post by chrisigleich »

würde gerne wissen was ich einstellen muss damit der user unter dem der cron läuft (bei mir daemon) auch das recht hat /usr/sbin/rcapache auszuführen
chris
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten
Contact:
 

Re: testskript ob apache noch läuft?

Post by captaincrunch »

Schau dir mal su oder sudo an
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
mikespi
Posts: 95
Joined: 2002-12-28 17:47
Location: Muenchen
 

Re: testskript ob apache noch läuft?

Post by mikespi »

@krogoth

Danke für das Script, klappt wunderbar auch wenn ich was da steht noch nicht verstehen kann. :(


chrisgleich wrote:was ich einstellen muss damit der user unter dem der cron läuft (bei mir daemon) auch das recht hat /usr/sbin/rcapache auszuführen
stellt es ein Problem/Sicherheitslücke dar das Script unter root laufen zu lassen? Oder warum läuft das Script bei dir unter daemon?

In welchen Zeitabständen sollte denn das Script am besten laufen? Alle 5 Minuten? Und wie kann ich das loggen in den Logs bei diesem Script ausschalten.


Grüsse
Mike
krogoth
Posts: 57
Joined: 2003-04-11 01:43
Location: Alfter bei Bonn
 

Re: testskript ob apache noch läuft?

Post by krogoth »

also eine sicherheitsluecke ist es nur dann wenn jemand auf die idee kommt eine datei namens rcapache zu bauen und diese wuerde dann unter root ausgefuehrt werden.
also es ist schon ein risiko, aber das is vernachlaessigbar. Also theoretisch brauechtest du das script als ein user ausfuehren, der apache starten, aber sonst nix anderes machen kann.

das loggen kannst du ausmachen indem du in alle zeilen, in denen "echo" steht ein # vors echo machst

also zeitabstaende sind im grunde egal, das script ist ja nicht wirklich etwas was lange laeuft, aber im grunde brauchst du es nicht oefter als alle 5min auszufuehren
mikespi
Posts: 95
Joined: 2002-12-28 17:47
Location: Muenchen
 

Re: testskript ob apache noch läuft?

Post by mikespi »

krogoth wrote:also eine sicherheitsluecke ist es nur dann wenn jemand auf die idee kommt eine datei namens rcapache zu bauen und diese wuerde dann unter root ausgefuehrt werden.
Dafür würde aber dann mein root Passwort benötigt oder? Wenn ja dann hätte er ja eh Vollzugriff auf meinen Server.

Mike
chrisigleich
Posts: 41
Joined: 2003-07-22 00:00
Location: Koblenz
 

Re: testskript ob apache noch läuft?

Post by chrisigleich »

zu sicherheitslücke:

im prinzip ist es doch ganz einfach => je weniger mit root rechten läuft destso weniger "Angriffsfläche" gibt es.
mikespi
Posts: 95
Joined: 2002-12-28 17:47
Location: Muenchen
 

Re: testskript ob apache noch läuft?

Post by mikespi »

Tschuldige das ich da noch mal nachfrage.

Wenn so wenig wie möglich als root laufen soll gibt es dann

- querverbindungen womit sich andere rootrechte holen können

- Ist es eigentlich nicht egal wie das Script läuft da wenn er root rechte hat oder sich holen kann ja eh alles machen kann.

Ich bin bis jetzt davon ausgegangen das durch ein exploit ( und was da so dazu gehört ) oder rootkit mein Server geknackt werden kann. ( schwache Passwörter mal ausgenommen )

Mike
krogoth
Posts: 57
Joined: 2003-04-11 01:43
Location: Alfter bei Bonn
 

Re: testskript ob apache noch läuft?

Post by krogoth »

naja.. ich koennte dir jetzt nen fall sagen wie es mit ein paar einfachen tricks geht das auszunutzen, aber ich will hier keinen auf dumme gedanken bringen.

im grunde ist es ungefaehrlich dieses script als root laufen zu lassen, weil es ja passiv laeuft, aber wenn such sicherer gehen willst, kannst du apachectl als 550/root:root machen und dann sollte keiner die datei veraendern koennen, dann waer diese moeglichkeit schonmal ausgeschlossen, aber es ist eine abstrakte gefahr, also kein grund drueber nachzudenken
chrisigleich
Posts: 41
Joined: 2003-07-22 00:00
Location: Koblenz
 

Re: testskript ob apache noch läuft?

Post by chrisigleich »

danke übrigens an krogoth das skript klappt wunderbar
Outlaw
Posts: 1500
Joined: 2002-12-04 10:22
Location: 4. Server von rechts, 2. Reihe von oben
 

Re: testskript ob apache noch läuft?

Post by Outlaw »

Hallo,

auch ich bin auf der Suche nach sowas gewesen, habe aber ein Problem:

Ich habe das Skript mit 550/root:root in das Verzeichnis cron.hourly gespeichert. Wenn ich es jetzt manuell aufrufe, kommt sofort:

Code: Select all

meiner:/etc/cron.hourly # ./apachecheck
apache has died...
httpd: Kein Prozess abgebrochen
Starting httpd [ frontpage PERL PHP4 SSL ]                           done
meiner:/etc/cron.hourly #
Der Apache läuft aber momentan prima und ich möchte nicht, daß er jede Stunde neu gestartet wird ....

Wo ist das Problem ??

Gruß Outi

NACHTRAG:

Ok, das Skript läuft jetzt, danke nochmal. Ich hatte mich bei der URL vertippt.

Was anderes: Kann man noch einen Befehl einbauen, der im Falle eines Falles eine Mail rausschickt ??
:D Gruß Outi :D
krogoth
Posts: 57
Joined: 2003-04-11 01:43
Location: Alfter bei Bonn
 

Re: testskript ob apache noch läuft?

Post by krogoth »

das musst du einfach ueber deinen MTA machen, z.B. bei sendmail:

Code: Select all

sendmail meine@email.tld < /home/krogoth/mailtemplate.txt
und in das /home/krogoth/mailtemplate.txt packst du einfach folgenden (oder aehnlichen Text rein:
From: Apache-Online-Controller <root@localhost>
Return-Path: noreply@localhost
To: You <deine@email.tld>
Subject: Apache has crashed and had to be restarted.

Hello,

this is a automatically created message to tell you that your Apache webserver had crashed and had to be restarted.
This was done.
.
der abschliessende punkt am Ende muss afair nicht zwangslaeufig sein, aber in der konsole musste es sein, daher weiss ich nicht ob er auch in einem template sein muss. Einfach ausprobieren, wenns ohne geht, gut, wenn nicht, dann halt hinmachen.
Outlaw
Posts: 1500
Joined: 2002-12-04 10:22
Location: 4. Server von rechts, 2. Reihe von oben
 

Re: testskript ob apache noch läuft?

Post by Outlaw »

Hallo und Danke, werde ich noch einbauen.

Mal a Froch oder 2 dazu:

1. Wie ist das bei Postfix ?? Gleicher Befehl ??

2. Hast Du was dagegen, wenn ich das Skript mit in mein HowTo mit aufnehme ??

Gruß Outi
:D Gruß Outi :D
krogoth
Posts: 57
Joined: 2003-04-11 01:43
Location: Alfter bei Bonn
 

Re: testskript ob apache noch läuft?

Post by krogoth »

also mit postfix kenn ich mich nicht so wirklich aus, aber wenn ich das in der manpage (man sendmail bei postfix) gelesen hab, muesste es genauso gehen.

was fuer ein howto machst du denn?
ich hab nix dagegen wenn du es verwendest, ist ja dazu da dass es jede(r) verwenden kann wofuer er/sie es braucht
Outlaw
Posts: 1500
Joined: 2002-12-04 10:22
Location: 4. Server von rechts, 2. Reihe von oben
 

Re: testskript ob apache noch läuft?

Post by Outlaw »

:D Gruß Outi :D
Outlaw
Posts: 1500
Joined: 2002-12-04 10:22
Location: 4. Server von rechts, 2. Reihe von oben
 

Re: testskript ob apache noch läuft?

Post by Outlaw »

Ich hatte vorhin das Phänomen, daß weder der Apache gestoppt war, noch ein httpd Prozess abgestürzt war, trotzdem war der Apache nicht zu erreichen und auch das Skript stoppte mittendrin (bei manuellem Aufruf).

Gibt es vielleicht eine 3. Möglichkeit zwischendrin, die nach einem gewissen Timeout einfach trotzdem den Apache per Kill "hartresettet" ??

Gruß Outi
:D Gruß Outi :D
tomek
Posts: 243
Joined: 2003-08-05 09:44
Location: Paderborn
Contact:
 

Re: testskript ob apache noch läuft?

Post by tomek »

Reparier lieber deinen Apache anstatt mit Test-Scripts rumzuflicken. Ich hab mehrere Apache Webserver am laufen, sowohl die 1.3er unter SuSE als auch die 2.0er unter RedHat, und zwar wochenlang ohne Probleme.
chrisigleich
Posts: 41
Joined: 2003-07-22 00:00
Location: Koblenz
 

Re: testskript ob apache noch läuft?

Post by chrisigleich »

hi
mein server ist wieder abgestürzt, die frage ist ob das mit dem unused auch durch das skript abgefangen wird bzw. warum der apache nicht restartet wurde. anscheinend war ja der apache noch am laufen sonst wäre er ja nicht mehr runtergefahren worden vor dem restart und was bedeutet in diesem zuammenhang unused?
hier die ausgabe bzw eingabe:

p1513x260:~ # rcapache status

Checking for httpd: unused

p1513x260:~ # rcapache restart

Shutting down httpd done

Starting httpd [ PHP4 SSL ] done

p1513x260:~ #
------------------------------------------------------------------------------------

das war die eingabe, hier ist das skript das klappt er schriebt mir auch eine email aber er hat den server leider nicht restartet bzw gestartet
jetzt ist meine frage was ist daran falsch:
heir ist meie version des skriptes ich lasse die befehle mit sudo ausführen

#!/bin/bash

if [ `ps -ef | grep -v "grep" | grep -c "httpd"` -gt 0 ]; then
if [ `wget "http://www.xxxx.de/" --delete-after 2>&1 | grep -c "200 OK"` -eq
0 ]; then
echo "apache has died...";
killall httpd
sleep 10;
killall -9 httpd;
sudo rcapache start;
mail -s "apache has died" -c xx@xx.de admin@xxxx.de
fi
else
echo "apache dead..";
sudo rcapache start;
mail -s "apache war tod" -c -c xx@xx.de admin@xxxx.de
fi

---------------------------------------------------------------------------------------
und hier ist der ausschnitt aus der sudo.conf

daemon p1513xx60=NOPASSWD: /usr/sbin/rcapache start, /usr/bin/mount, /usr/bin/um
ount, /usr/bin/killall -9 httpd, /usr/bin/killall httpd

----------------------------------------------------------------------------------------
hier ist noch der betreffende auschnitt aus der error_log:

[Wed Aug 13 00:15:04 2003] [notice] Apache/1.3.26 (Linux/SuSE) mod_ssl/2.8.10 Op
enSSL/0.9.6g PHP/4.2.2 configured -- resuming normal operations
[Wed Aug 13 00:15:04 2003] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin
/suexec)
[Wed Aug 13 00:15:04 2003] [notice] Accept mutex: sysvsem (Default: sysvsem)
[Wed Aug 13 00:15:04 2003] [warn] long lost child came home! (pid 15808)
[Wed Aug 13 01:00:29 2003] [notice] caught SIGTERM, shutting down
[Wed Aug 13 07:28:53 2003] [notice] Apache/1.3.26 (Linux/SuSE) mod_ssl/2.8.10 Op
enSSL/0.9.6g PHP/4.2.2 configured -- resuming normal operations
[Wed Aug 13 07:28:53 2003] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin
/suexec)
[Wed Aug 13 07:28:53 2003] [notice] Accept mutex: sysvsem (Default: sysvsem)
[Wed Aug 13 07:31:58 2003] [error] [client 64.68.82.170] File does not exist: /h
ome/www/web1/html/robots.txt

falls ncoh mehr informationen gebraucht werden, bitte melden
Outlaw
Posts: 1500
Joined: 2002-12-04 10:22
Location: 4. Server von rechts, 2. Reihe von oben
 

Re: testskript ob apache noch läuft?

Post by Outlaw »

Tomek wrote:Reparier lieber deinen Apache anstatt mit Test-Scripts rumzuflicken. Ich hab mehrere Apache Webserver am laufen, sowohl die 1.3er unter SuSE als auch die 2.0er unter RedHat, und zwar wochenlang ohne Probleme.
Warum mich solche Antworten immer wieder motivieren ?? .... ;):D

Da baut man mal einen Schutz ein, damit sich das System im Falle eines Falles bei Kleinigkeiten selbst helfen kann und dann sowas, tstststs ....

Mein Apache läuft im Moment problemlos, ich hatte bisher nur 2 Fälle (in 4 Monaten), wo der Apache sich verschluckt hat. Ich kann leider nicht 24h auf den Apache aufpassen und daß Deiner 365/24/7 läuft, kaufe ich Dir nicht ab aber das ist auch nicht das Thema hier, ich wollte nur wissen, ob es eine Möglichkeit für einen 3. Fehlerfall gibt, der eigentlich kein Fehler ist aber ich würde trotzdem gerne den Apachen restarten, wenn er zu lange blockiert wird.

Wenn Du da was weisst, wäre ich Dir dankbarer für ne Antwort als das, was Du da vorher abgegeben hast ....

Nix für ungut und fühl Dich nicht gleich angegriffen, mich ärgern (aber nur kurz) eben solche Aussagen wie "Meiner bleibt auch ohne Viagra stabil" ohne inhaltlichen Nutzwert .... ;):D

Gruß Outi

PS: Bis bestimmte Probleme gelöst sind, ist man um jeden "Workaround" bis zur Lösung dankbar ....
:D Gruß Outi :D
Post Reply