testskript ob apache noch läuft?
-
chrisigleich
- Posts: 41
- Joined: 2003-07-22 00:00
- Location: Koblenz
testskript ob apache noch läuft?
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
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
Re: testskript ob apache noch läuft?
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..";
fider 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?
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
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?
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?
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
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
Re: testskript ob apache noch läuft?
ok, hast recht: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
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?
@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?
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
chris
-
captaincrunch
- Userprojekt

- Posts: 7066
- Joined: 2002-10-09 14:30
- Location: Dorsten
- Contact:
Re: testskript ob apache noch läuft?
Schau dir mal su oder sudo an
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
Re: testskript ob apache noch läuft?
@krogoth
Danke für das Script, klappt wunderbar auch wenn ich was da steht noch nicht verstehen kann. :(
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
Danke für das Script, klappt wunderbar auch wenn ich was da steht noch nicht verstehen kann. :(
stellt es ein Problem/Sicherheitslücke dar das Script unter root laufen zu lassen? Oder warum läuft das Script bei dir unter daemon?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
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
Re: testskript ob apache noch läuft?
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
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
Re: testskript ob apache noch läuft?
Dafür würde aber dann mein root Passwort benötigt oder? Wenn ja dann hätte er ja eh Vollzugriff auf meinen Server.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.
Mike
-
chrisigleich
- Posts: 41
- Joined: 2003-07-22 00:00
- Location: Koblenz
Re: testskript ob apache noch läuft?
zu sicherheitslücke:
im prinzip ist es doch ganz einfach => je weniger mit root rechten läuft destso weniger "Angriffsfläche" gibt es.
im prinzip ist es doch ganz einfach => je weniger mit root rechten läuft destso weniger "Angriffsfläche" gibt es.
Re: testskript ob apache noch läuft?
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
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
Re: testskript ob apache noch läuft?
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
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?
danke übrigens an krogoth das skript klappt wunderbar
Re: testskript ob apache noch läuft?
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:
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 ??
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 #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
Re: testskript ob apache noch läuft?
das musst du einfach ueber deinen MTA machen, z.B. bei sendmail:
und in das /home/krogoth/mailtemplate.txt packst du einfach folgenden (oder aehnlichen Text rein:
Code: Select all
sendmail meine@email.tld < /home/krogoth/mailtemplate.txtder 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.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.
.
Re: testskript ob apache noch läuft?
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
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
Re: testskript ob apache noch läuft?
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
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
Re: testskript ob apache noch läuft?
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
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
Re: testskript ob apache noch läuft?
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?
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
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
Re: testskript ob apache noch läuft?
Warum mich solche Antworten immer wieder motivieren ?? .... ;):DTomek 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.
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