If Abfrage ob sendmail läuft??

mehlbox

mehlbox

Eroberer
Hallo zusammen,

ich möchte gerne per script abfragen ob sendmail läuft oder nicht, falls ja dann bla bla, falls nicht bla bla.

Wenn ich service sendmail status eingebe bekomme ich ja zwei Meldungen einmal das er läuft einmal das er nicht läuft, wie kann man das mit einer If Frage abfangen???

Danke schonmal für Eure Hilfe. . .

Gruß Mehlbox
 
Hallo

Von welchem OS reden wir?
Was läuft denn als sendmail? Ist es wirklich sendmail, oder ein Alias auf Exim/Postfix...

Ob ein Programm läuft, kannst du üblicherweise mit einer Kombination mit ps und grep oder gleich pgrep testen.
Beispiel:
Code:
#testen ob apache2 läuft
[b]if [ "$(ps ax|grep -i "apache2")" ]; then echo "läuft"; else echo "läuft nicht";fi[/b]

Gruß Wolfgang
 
Hallo Wolfgang,

super genau was ich gesucht habe. Vielen Dank.

Übrigens wir reden vom OS Redhat ES3

Gruß
 
Moin Wolle,
Wolfgang schrieb:
Code:
[b]if [ "$(ps ax|grep -i "apache2")" ]; then echo "läuft"; else echo "läuft nicht";fi[/b]

Ausgabe bei mir:
Code:
läuft

Jedoch habe ich auf meinem MacOSX gar keinen apache2 am Laufen :D
Das ist der Grund:
Code:
schlaubi:~ gurke$ ps ax|grep -i "apache2"
  254  p1  R+     0:00.00 grep -i apache2

Lösung (entweder ein "grep -v grep" anfügen oder den grep austricksen...):
Code:
if [ "$(ps ax|grep -i "[b][[/b]a[b]][/b]pache2")" ]; then echo "läuft"; else echo "läuft nicht";fi

Ausgabe bei mir:
Code:
läuft nicht
 
Das ist ja schon mal sehr hilfreich, mich würde aber interessieren, wie ich den status vom mta bei sendmail herausfinde.

also ich habe sendmail aus dem runlevel rausgenommen, wenn ich das "script" starte sagt er mir "läuft", vermtl. weil beim sendmail status " MSP : running, MTA: is not running QUE: Same as MTA" kommt. Ich würde gerne diesen MTA status herausfinden.:hilfe2: ich wühle schon seit stunden im inet ?(

habe debian.
 
top statt ps?

Hallo, ich habe hier sowas, das scheint zu funzen:
Code:
#!/bin/bash

TEST=`top -b -n1 | grep -c xcompmgr`
if [ "$TEST" == "0" ]
  then
    echo "Schalte Ttransparenz ein..."
    /usr/bin/xcompmgr &
  else
    echo "Schalte transparenz aus..."
    killall xcompmgr
fi
--
P.S.: Die Rechtschreibfehler sind aus dem Original :rolleyes: - die unterliegen wie der Rest aber keinem Copyright und können bei Bedarf verbessert werden (peinlich..)
 
Zuletzt bearbeitet:
schon mal danke für deine schnelle antwort, leider bin ich (noch) anfänger was das bash-scripting betrifft.
ich kann da nicht sehen woher der status vom mta kommt, ...dürfte die erste zeile in etwa so aussehen, falls das so doch mit dem mta klappt?

Code:
TEST=`sendmail | grep -c mta`
 
ah, jetzt hab ichs geschnackelt, dein script schaut, ob ein prozess läuft oder nicht läuft..... allles klar!


Nochmal vielen Dank! Das ist perfekt für meinen Heartbeat.
 
Zuletzt bearbeitet:
an oder aus

ah, jetzt hab ichs geschnackelt, dein script schaut, ob ein prozess läuft oder nicht läuft..... allles klar!
Yep, genau das! (sehr ähnlich zu "ps") Ich war nicht völlig sicher, ob das den Nagel auf den Kopf trifft, also ob du den Status zurück haben wolltest, den hattest du ja:
" MSP : running, MTA: is not running QUE: Same as MTA"
Darin könntest du mit grep suchen nach "MTA: is not running"; wäre evtl. auch ein Ansatz, aber ich hatte es so verstanden, daß du genau das wolltes: Isser nun an, oder isser aus?
Nochmal vielen Dank! Das ist perfekt für meinen Heartbeat.
Nicht dafür ;) hoffentlich bewährt sich das nun, sonst geht's hier halt weiter..
 
Noch was.....

.... ich bin auf der Suche nach einer Anweisung, Ereignisse in eine logfile zu schreiben. Ich möchte zusammen mit Datum und Uhrzeit festhalten, ob meine If-Abfrage jetzt erfolgreich war oder nicht, und das entsprechend mitloggen. Bis jetzt bin ich soweit:
Code:
#!/bin/bash

EMAIL=`top -b -n1 | grep -c sendmail-mta`
VERBINDUNG=`ping -c 2 [eine ip] | grep -c ms`
if [ "$EMAIL" != "0" ] &&  [ "$VERBINDUNG" -gt "1" ]  
  then
        echo $EMAIL
	echo $VERBINDUNG
	echo "ich glaube ich bin der master"
	echo "ich glaube ich bin der master">>/var/log/scripts/testmail.log
  else
        echo $EMAIL
	echo $VERBINDUNG
	echo "ich glaube ich bin nicht der master"
	echo "ich glaube ich bin nicht der master">>/var/log/scripts/testmail.log
fi

exit 0
 
ich habs!:D :)) 8)

Code:
#!/bin/bash
NAME=`uname -n`
LOGDIR="/var/log/scripts/"
LOGFILE="$LOGDIR/testmail.log"
DATUM=`date "+%Y-%m-%d %H:%M"`
EMAIL=`top -b -n1 | grep -c sendmail-mta` 		#laeuft der prozess sendmail-mta?
VERBINDUNG=`ping -c 2 172.24.7.211 | grep -c ms` 	#pingt master ip, anzahl der angezeigten 'ms' 1x = tot, >1x lebt

if [ "$EMAIL" != "0" ] &&  [ "$VERBINDUNG" -gt "1" ]   #vgl ob sendmail an ist und der ping erfolgreich war
  then
	echo $NAME
       echo $EMAIL
	echo $VERBINDUNG
	echo "Temporary I am master server"
	echo -e "$NAME - $DATUM - Temporary I am master server">>$LOGFILE
#mail_dbsystems_azubis.sh
#mail_dbsystems_betreuer.sh
#mail_railion_azubis.sh

  else
	echo $NAME
       echo $EMAIL
	echo $VERBINDUNG
	echo "Temporary I am not master server"
	echo -e "$MAME - $DATUM - Temporary I am not master server">>$LOGFILE
fi

exit 0
 
Zuletzt bearbeitet:

Ähnliche Themen

Skript soll nicht doppelt laufen... kill pkill pid cron

CentOS 5.8 –SQL Abfrage– HTML wird generiert und daraus müssen mehrere Mails versendet werden

Keine grafische Oberfläche (Debian Installation)

Samba User importieren

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

Zurück
Oben