Crontab - Suchen und Ersetzen

Bash, Shell, PHP, Python, Perl, CGI
flibbi
Posts: 94
Joined: 2002-09-28 18:42

Crontab - Suchen und Ersetzen

Post by flibbi »

Heidiho,

ich hab ein kleines Problem, dass ich auch nach Durchsicht der SED Howtos die ich hier rum fliegen habe nicht ohne weiteres lösen kann:

Ich möchte gern die crontab von root auf verschiedenen Servern anpassen - wobei der IST Zustand der Datei so ist, dass der Ausführungsintervall immer verschieden ist, z.B. so:

Code: Select all

cat /var/spool/cron/crontabs/root

# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.rmnQ1J/crontab installed on Fri Feb  3 09:12:56 2006)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
0 2 * * *   /usr/local/sbin/backup.sh > /dev/null 2>&1


Ich möchte die bestehende Zeile löschen, und durch eine andere fest definierte:

Code: Select all

*/15 * * * * /usr/local/sbin/snapshot.sh > /dev/null 2>&1
(auf jedem Server gleich) ersetzen.

Wie bringe ich sed dazu, die Zeile zu löschen, die jeweils andere Ausführungsintervalle hat und demnach nicht gleich ist, sowie die neue Zeile einzufügen?
Ich hab es mit sed 's//g' versucht, scheitere jedoch an den Leerzeichen des Crons.
Ebenso habe ich sed '4 d' versucht, leider ist der Eintrag nicht immer in Zeile 4 :(

Habt ihr ein paar Lösungsvorschläge bzw. Tipps für mich?

gruß,

flibbi
elch_mg
Posts: 302
Joined: 2006-01-23 19:14
Location: 41063

Re: Crontab - Suchen und Ersetzen

Post by elch_mg »

ungeprüft und nicht drüber nachgedacht:

Code: Select all

"s#.*?/usr/local/sbin/backup.sh > /dev/null 2>&1#*/15 * * * * /usr/local/sbin/snapshot.sh > /dev/null 2>&1#"
ist natürlich eine zeile. guck dir mal den aufbau von RegExps an.
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: Crontab - Suchen und Ersetzen

Post by Roger Wilco »

flibbi wrote:Ich möchte die bestehende Zeile löschen, und durch eine andere fest definierte:

Code: Select all

*/15 * * * * /usr/local/sbin/snapshot.sh > /dev/null 2>&1
(auf jedem Server gleich) ersetzen.
Wenn das der einzige Cronjob in der Crontab von root ist:

Code: Select all

echo "*/15 * * * * /usr/local/sbin/snapshot.sh > /dev/null 2>&1">cron.root && crontab cron.root && rm cron.root && crontab -l
Wenn mehrere Cronjobs aufgeführt sind, wäre es natürlich schlecht, die gesamte crontab zu überschreiben. ;)
flibbi
Posts: 94
Joined: 2002-09-28 18:42

Re: Crontab - Suchen und Ersetzen

Post by flibbi »

Jubb sind mehrere drin, dass ist das Problem :?
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: Crontab - Suchen und Ersetzen

Post by Roger Wilco »

Code: Select all

crontab -l | grep -v "/usr/local/sbin/backup.sh" > cron.root
echo "*/15 * * * * /usr/local/sbin/snapshot.sh > /dev/null 2>&1" >> cron.root
crontab cron.root
rm cron.root && crontab -l