Ich habe diesen Python-Skript-Dienste wie MySQL und Apache zu überprüfen und wenn einige von ihnen sind nach unten, dann geht es wieder los:Was ist falsch an meinem Python-Skript und Cron-Job?
import subprocess
import smtplib
_process = ['mysql', 'apache2']
for _proc in _process:
p = subprocess.Popen(["service", _proc, "status"], stdout=subprocess.PIPE)
output, err = p.communicate()
print "*** check service "+_proc+" ***\n"
if 'Active: active (running)' in output:
print _proc+" is working!"
else:
print "Ouchh!! "+_proc+" again is down."
output = subprocess.Popen(["service", _proc, "start"])
print "*** The service "+_proc+" was restarted ***\n", output
print "*** sending email ***\n"
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
_from = "[email protected]"
_to = "[email protected]"
_cc = ["[email protected]"]
_pass = "xxxxxx"
server.login(_from, _pass)
msg = "\r\n".join([
"From: "+_from,
"To: "+_to,
"CC: "+",".join(_cc),
"Subject: Ouchh!! "+_proc+" again is down.",
"",
"Again " + _proc + " is down. The service was restarted!!"
])
server.sendmail(_from, _to, msg)
server.quit()
print "*** email send ***\n"
Es funktioniert in meiner Konsole gut, wenn ich den folgenden Befehl ausführen:
python /home/check-services.py
Alles in Ordnung aussieht. Ich versuche, den Cron-Job im Webmin-Server einzurichten, und er sollte jede Minute ausgeführt werden, tut es aber nicht. Dies ist das Cron-Protokoll:
(root) CMD (python /home/check-services.py) jede Minute, wie wir bereits konfiguriert wurde.
Ich sehe nichts abnormal, aber es funktioniert immer noch nicht. Ich schätze all deine Hilfe.
Python-Version 2.7.
EDIT: ich die E-Mail in/var/E-Mail/root und es zeigt dies gerade gesehen:
Traceback (most recent call last):
File "/home/check-services.py", line 77, in <module>
p = subprocess.Popen(["service", _proc, "status"], stdout=subprocess.PIPE)
File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Gerade durch die Syntaxfärbung in diesem Beitrag geht, sieht es aus wie Sie haben, ein zusätzliches Anführungszeichen nach '" ist wieder runter. "' – Kevin
hast du '/ usr/bin/python/home/check-services.py' versucht. Die meiste Zeit für Cron zu arbeiten, müssen Sie absolute Pfad geben. –
Vermissen Sie #!/Usr/bin/python in der ersten Zeile des Skripts? In der Crontab, nennst du es mit dem Python Pre-Fix oder nur mit /opt/script/myscript.py? – AK47