ich habe mich gerade an einem kleinen Cronjob Skript für meinen Server versucht.
1. Wo finde ich unter Debian die Fehlermeldungen von Python?
2. Was könnte man technisch an diesem Skript verbessern?
3. Warum bekomme ich hier immer eine Mail mit FAILED bei Backups und bei den Archiven gibt er nichts mehr aus...
Code: Alles auswählen
nachricht = ""
# Archivieren und backupen
nachricht += "\n\nBackups:\n\n"
import shutil
import time
import os
os.mkdir("/backups/temp/")
try:
shutil.copytree("/var/www/vhosts/", "/backups/temp/")
nachricht += "[ OK ] vhosts wurde erfolgreich kopiert.\n"
except:
nachricht += "[ FAILED ] Beim kopieren der vhosts ist ein Fehler aufgetreten.\n"
kommandos = (
"mysqldump --opt --user=q --password= g > /backups/temp/g.sql",
"mysqldump --opt --user=q --password= h > /backups/temp/h.sql",
"tar cfvz backup_%s.tar.gz /backups/temp/" %time.strftime("%d.%m.%Y_%H_%M",time.localtime())
)
for kommando in kommandos:
try:
prozess = os.system(kommando)
prozess.wait()
nachricht += "[ OK ] Der Befehl \"%s\" wurde erfolgreich ausgeführt.\n" %kommando
except:
nachricht += "[ FAILED ] Der Befehl \"%s\" konnte nicht ausgeführt werden.\n" %kommando
try:
os.remove("/backups/temp")
nachricht += "[ OK ] Das Verzeichnis /backups/temp wurde erfolgreich gelöscht.\n"
except:
nachricht += "[ FAILED ] Das Verzeichnis /backups/temp konnte nicht gelöscht werden.\n"
# Alte Archive löschen
nachricht += "\n\nAlte Archive löschen:\n\n"
import os
from datetime import datetime, timedelta
time_diff = datetime.now() - timedelta(days=10)
for root, dirs, files in os.walk("/backups/"):
for name in files:
path = os.path.join(root, name)
last_mod = datetime.fromtimestamp(os.path.getmtime(path))
if last_mod < time_diff:
try:
os.remove(path)
nachricht += "[ OK ] Die Datei %s wurde gelöscht.\n" %path
except OSError:
nachricht += "[ FAILED ] Die Datei %s konnte nicht gelöscht werden.\n" %path
# Bericht an x senden
import smtplib
recipient = "qwe"
email = '''
Content-Type: text/plain; charset=UTF-8
From: Server
To: %s
Subject: Server-Cronjob
%s''' %(recipient, nachricht)
mailserver = smtplib.SMTP("localhost")
mailserver.sendmail("Server", recipient, email)
mailserver.quit()