Mysql.secret in cron mails verbergen

german

#1

Guten Tag,

wir benutzen OXSE4UCS auf Basis von UCS 3.2 errata2.
Die MySql-Datenbank wird regelmäßig per Cron-Job gedumpt und dann gesichert.
Cron schickt eine Mailbenachrichtigung.
Wir benutzen das Kommando
mysqldump -u root -p$(< /etc/mysql.secret) --all-databases --events > Dateiabc.sql
mysqldump -u root -p$(< /etc/mysql.secret) localhost_6 > Dateiabc.sql
mysqldump -u root -p$(< /etc/mysql.secret) configdb > Dateiabc.sql
mysqldump -u root -p$(< /etc/mysql.secret) --events mysql > Dateiabc.sql

Technisch funktioniert das auch einwandfrei. Allerdings zeigt cron in seiner E-Mail an root@unseredomain das mysql.secret im Klartext an. das ist unschön.
Es gibt andere Lösungen, wie z.B.:
superuser.com/questions/490521/r … -passwords

Kann man so etwas in einer UCS3.2 implementieren?

Schöner Gruß

Thomas Baumann


#2

Hallo,

der einfachste Weg wäre wohl, du packst deinen mysqldump Befehl in ein eigenes Script, und gibst dieses Script in der cron- Tabelle an.
Somit wird cron auch nicht mehr dein Passwort durch die Welt verschicken.

lG


#3

Hallo,

Die angegebenen Befehle sind nur eine Auszug aus einem größeren Backup-Skript für unsere OXSE. Der Cron zeigt es aber trotzdem an.

trotzdem vielen Dank

Thomas Baumann


#4

[quote=“tba”]Hallo,

Die angegebenen Befehle sind nur eine Auszug aus einem größeren Backup-Skript für unsere OXSE. Der Cron zeigt es aber trotzdem an.

trotzdem vielen Dank

Thomas Baumann[/quote]
Warum verschickt cron den Inhalt eines Skriptes?
Wird das BASH- Skript mit “-x” gestartet, oder “set -x” ausgeführt?

Könnte ich mal einen Auszug haben, um zu sehen, wie die Ausgabe erfolgt?


#5

Hallo,

das Skript wird mit bash -x über die /etc/crontab gestartet.
Dier Ausdruck war etwas missverständlich:
in der Mail zeigt cron nicht das skript sondern die tatsächlich ausgeführten Befehle aus dem Kript

z.B.: mysqldump -u root -phierdasKennwort --all-databases --events < /backup/mysqldump.sql
Der Befehl im Skript heißt:
mysqldump -u root -p$(< /etc/mysql.secret) --all-databases --events > /data/backup/mysqldump/mysqlalldump.sql

Schönen Gruß

Thomas Baumann


#6

Du könntest vor dem dump befehl ein “set -” einbauen, nach dem Dump Befehl ein “set -x”.
Dann wird der mysqldump Befehl nicht mehr debuggt ausgegeben.
Du könntest vorher noch den mysql Befehl via “echo” Ausgeben.


#7

Danke, das würde funktionieren, unterdrückt aber in der Cron-Mail den kompletten Output des Befehls. Man müsste dann indirekt finden, ob der Befehl erfolgreich abgesetzt wurde.
Ich grüble gerade, ob es nicht irgendwie möglich ist, doch zu sehen, dass ein erfolgreicher Dump-Befehl abgesetzt wurde ohne, dass in der Mail das Kennwort erscheint.

Da muss noch ein bisschen Gehirnschmalz in das Skript.

Schönen Gruß

Thomas Baumann


#8

Hallo,

ob ein Befehl erfolgreich war, kann mit der Variable $? überprüft werden (beinhaltet den return Status des letzten Befehls):

mysqldump --args if [ $? != 0 ]; then echo "mysql dump fehlgschlagen!" else echo "dump erfolgreich!" fi

Gerne kannst du auch ein komplettes Skript posten, und schauen, was man wie verbessern könnte.

Wenn du weitere Fragen hast, dann bitte melden :wink:


#9

Hallo,

bitte entschuldigt die späte Antwort. Ich lasse in meinem Backup-Skript den mysql-Dump mit set- und set -x laufen.
Das funktioniert gut.
Die Erfolgsüberprüfung ist bei mir einfach. Nach den dumps kommt ein ls -tr | tail -10. Das zeigt die 10 neuesten dumps an und ich sehe, ob sie da sind und ob sie in der Größe den vorherigen entsprechen. Das dürfte als einfaches Erfolgskriterium reichen und spart mir ein kompliziertes error handling.

Schönen Dank an alle, die geantwortet haben

Thomas Baumann