* [gentoo-user] crontab questions @ 2012-12-11 21:15 Grant 2012-12-12 3:14 ` Michael Orlitzky 0 siblings, 1 reply; 6+ messages in thread From: Grant @ 2012-12-11 21:15 UTC (permalink / raw To: Gentoo mailing list [-- Attachment #1: Type: text/plain, Size: 828 bytes --] Is there a way to remove "Cron <root@hostname>" from the subject line of crontab mail without piping each cron job to 'mail'? I set 'usermod -c hostname root' on each of my systems so that the From: line displays "hostname" for crontab mail. This works on each system except the mail server itself which still shows "Cron Daemon". Can crontab mail from the mail server be made to display From: "hostname" like the other systems? I'm not completely clear on how cronbase works. Can this crontab be integrated into the system crontab via cronbase or should it be run as a separate user crontab for root? 0 4 * * * layman -NS && eix-sync -n && eix-remote update -n 15 4 * * * emerge -pvDuN world 20 4 * * * eclean -C distfiles 30 4 * * * eclean -C packages 40 4 * * * eix-test-obsolete 45 4 * * * revdep-rebuild -ip - Grant [-- Attachment #2: Type: text/html, Size: 958 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [gentoo-user] crontab questions 2012-12-11 21:15 [gentoo-user] crontab questions Grant @ 2012-12-12 3:14 ` Michael Orlitzky 2012-12-12 22:09 ` Grant 0 siblings, 1 reply; 6+ messages in thread From: Michael Orlitzky @ 2012-12-12 3:14 UTC (permalink / raw To: gentoo-user On 12/11/2012 04:15 PM, Grant wrote: > Is there a way to remove "Cron <root@hostname>" from the subject line of > crontab mail without piping each cron job to 'mail'? > > I set 'usermod -c hostname root' on each of my systems so that the From: > line displays "hostname" for crontab mail. This works on each system > except the mail server itself which still shows "Cron Daemon". Can > crontab mail from the mail server be made to display From: "hostname" > like the other systems? > > I'm not completely clear on how cronbase works. Can this crontab be > integrated into the system crontab via cronbase or should it be run as a > separate user crontab for root? > > 0 4 * * * layman -NS && eix-sync -n && eix-remote update -n > 15 4 * * * emerge -pvDuN world > 20 4 * * * eclean -C distfiles > 30 4 * * * eclean -C packages > 40 4 * * * eix-test-obsolete > 45 4 * * * revdep-rebuild -ip > If your goal is to run these each one after the other, you can simply stick a shell script in /etc/cron.daily that executes them in order. The default crontab runs any executable files in, * /etc/cron.daily * /etc/cron.hourly * /etc/cron.monthly * /etc/cron.weekly at roughly the time specified in /etc/crontab. If any of those directories contain scripts, they're run in "alphabetical" order, i.e. how `ls` would sort them. To fix the Subject/From headers, try, http://www.postfix.org/header_checks.5.html I've never had to use them myself, but I think the REPLACE action will do what you want. The alternative is to replace the sendmail binary with something that executes e.g., sed -e 's/Subject: Cron <[^>]> /Subject: /g' | /the/actual/sendmail Both feel a little dirty, but the header checks are less likely to break something assuming that they will work on a client-provided From header. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [gentoo-user] crontab questions 2012-12-12 3:14 ` Michael Orlitzky @ 2012-12-12 22:09 ` Grant 2012-12-13 1:01 ` Michael Orlitzky 0 siblings, 1 reply; 6+ messages in thread From: Grant @ 2012-12-12 22:09 UTC (permalink / raw To: Gentoo mailing list [-- Attachment #1: Type: text/plain, Size: 2507 bytes --] > > Is there a way to remove "Cron <root@hostname>" from the subject line of > > crontab mail without piping each cron job to 'mail'? > > > > I set 'usermod -c hostname root' on each of my systems so that the From: > > line displays "hostname" for crontab mail. This works on each system > > except the mail server itself which still shows "Cron Daemon". Can > > crontab mail from the mail server be made to display From: "hostname" > > like the other systems? > > > > I'm not completely clear on how cronbase works. Can this crontab be > > integrated into the system crontab via cronbase or should it be run as a > > separate user crontab for root? > > > > 0 4 * * * layman -NS && eix-sync -n && eix-remote update -n > > 15 4 * * * emerge -pvDuN world > > 20 4 * * * eclean -C distfiles > > 30 4 * * * eclean -C packages > > 40 4 * * * eix-test-obsolete > > 45 4 * * * revdep-rebuild -ip > > > > If your goal is to run these each one after the other, you can simply > stick a shell script in /etc/cron.daily that executes them in order. > > The default crontab runs any executable files in, > > * /etc/cron.daily > * /etc/cron.hourly > * /etc/cron.monthly > * /etc/cron.weekly > > at roughly the time specified in /etc/crontab. If any of those > directories contain scripts, they're run in "alphabetical" order, i.e. > how `ls` would sort them. Thanks Michael. I'd like to have more control over when the commands are run. Maybe the system crontab (cronbase) should be used when that control isn't necessary or to allow programs to add stuff to a crontab, and a user crontab should be used when more control is necessary? > To fix the Subject/From headers, try, > > http://www.postfix.org/header_checks.5.html > > I've never had to use them myself, but I think the REPLACE action will > do what you want. The alternative is to replace the sendmail binary with > something that executes e.g., > > sed -e 's/Subject: Cron <[^>]> /Subject: /g' | /the/actual/sendmail > > Both feel a little dirty, but the header checks are less likely to break > something assuming that they will work on a client-provided From header. I think it's better for me to pipe the commands to mailx. I get mail if I run this on the command line emerge -pvDuN world | /usr/bin/mail -s "subject" -a "From: from" my@email.com But I don't get any mail when it runs in the crontab. Do you know why that's happening? I do get mail from 'emerge -pvDuN world' run in the crontab without piping it to mail. - Grant [-- Attachment #2: Type: text/html, Size: 3213 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [gentoo-user] crontab questions 2012-12-12 22:09 ` Grant @ 2012-12-13 1:01 ` Michael Orlitzky 2012-12-15 2:36 ` Grant 0 siblings, 1 reply; 6+ messages in thread From: Michael Orlitzky @ 2012-12-13 1:01 UTC (permalink / raw To: gentoo-user On 12/12/2012 05:09 PM, Grant wrote: >> >> at roughly the time specified in /etc/crontab. If any of those >> directories contain scripts, they're run in "alphabetical" order, i.e. >> how `ls` would sort them. > > Thanks Michael. I'd like to have more control over when the commands > are run. Maybe the system crontab (cronbase) should be used when that > control isn't necessary or to allow programs to add stuff to a crontab, > and a user crontab should be used when more control is necessary? > I personally like the idea of the cron.{daily,weekly,...}, but the implementation is a little goofy. On our mail server, I've added an additional directory called cron.bihourly to update virus/spam signatures every two hours. The simplest way to accomplish this is to add, # Run every two hours 0 */2 * * * root find -L /etc/cron.bihourly -type f -executable \ -execdir '{}' \; in the global /etc/crontab. I'm sure this is horribly deficient according to whoever implemented the run-crons stuff, but for me the additional clarity is worth it. You can of course add anything else you like in the global/user crontabs, and they'll work normally. But be careful: do you really want `emerge -puDN` to run 15 minutes after you start an `eix-sync`? Or do you just want it to run when `eix-sync` is done? If it's the latter, you don't want to schedule it 15 minutes later -- you could hit a slow mirror and still be updating when the `emerge` kicks off. In that case it's better to put all of the commands in one script, and schedule that when you want. That way the commands occur in sequence, and you can bail out if something fails. >> To fix the Subject/From headers, try, >> >> http://www.postfix.org/header_checks.5.html >> >> I've never had to use them myself, but I think the REPLACE action will >> do what you want. The alternative is to replace the sendmail binary with >> something that executes e.g., >> >> sed -e 's/Subject: Cron <[^>]> /Subject: /g' | /the/actual/sendmail >> >> Both feel a little dirty, but the header checks are less likely to break >> something assuming that they will work on a client-provided From header. > > I think it's better for me to pipe the commands to mailx. I get mail if > I run this on the command line > > emerge -pvDuN world | /usr/bin/mail -s "subject" -a "From: from" > my@email.com <mailto:my@email.com> > > But I don't get any mail when it runs in the crontab. Do you know why > that's happening? I do get mail from 'emerge -pvDuN world' run in the > crontab without piping it to mail. I'm not sure. I do the same thing, though, albeit with a temporary file (and it works). Maybe try `echo`ing the output to a file? This script emails me the current iptables to make sure fail2ban hasn't gone berserk: #!/bin/bash # Send the current iptables -L -n output to the postmaster. TMPFILE=/tmp/iptables-state.log MAILADDR="postmaster@example.com" echo "To: $MAILADDR" > $TMPFILE echo "From: root@mx1.example.com" >> $TMPFILE echo "Subject: mx1 iptables state" >> $TMPFILE iptables -L -n >> $TMPFILE sendmail -f root@mx1.example.com \ $MAILADDR \ < $TMPFILE rm $TMPFILE It's not very fancy but it does work. If a temp file works for you, it might help you narrow down the problem. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [gentoo-user] crontab questions 2012-12-13 1:01 ` Michael Orlitzky @ 2012-12-15 2:36 ` Grant 2012-12-15 17:21 ` Michael Orlitzky 0 siblings, 1 reply; 6+ messages in thread From: Grant @ 2012-12-15 2:36 UTC (permalink / raw To: Gentoo mailing list [-- Attachment #1: Type: text/plain, Size: 3233 bytes --] > > Thanks Michael. I'd like to have more control over when the commands > > are run. Maybe the system crontab (cronbase) should be used when that > > control isn't necessary or to allow programs to add stuff to a crontab, > > and a user crontab should be used when more control is necessary? > > > > I personally like the idea of the cron.{daily,weekly,...}, but the > implementation is a little goofy. On our mail server, I've added an > additional directory called cron.bihourly to update virus/spam > signatures every two hours. The simplest way to accomplish this is to add, > > # Run every two hours > 0 */2 * * * root find -L /etc/cron.bihourly -type f -executable \ > -execdir '{}' \; > > in the global /etc/crontab. I'm sure this is horribly deficient > according to whoever implemented the run-crons stuff, but for me the > additional clarity is worth it. > > You can of course add anything else you like in the global/user > crontabs, and they'll work normally. OK, I've moved all of my user crontabs (including root) to /etc/crontab. > But be careful: do you really want `emerge -puDN` to run 15 minutes > after you start an `eix-sync`? Or do you just want it to run when > `eix-sync` is done? If it's the latter, you don't want to schedule it 15 > minutes later -- you could hit a slow mirror and still be updating when > the `emerge` kicks off. In that case it's better to put all of the > commands in one script, and schedule that when you want. That way the > commands occur in sequence, and you can bail out if something fails. Done. > > I think it's better for me to pipe the commands to mailx. I get mail if > > I run this on the command line > > > > emerge -pvDuN world | /usr/bin/mail -s "subject" -a "From: from" > > my@email.com <mailto:my@email.com> > > > > But I don't get any mail when it runs in the crontab. Do you know why > > that's happening? I do get mail from 'emerge -pvDuN world' run in the > > crontab without piping it to mail. I got it working in /etc/crontab. Should I file a bug for http://www.gentoo.org/doc/en/cron-guide.xml to mention that vixie-cron must be restarted when making changes to /etc/crontab? It says: "Note that only Vixie-cron schedules jobs in /etc/crontab automatically." > I'm not sure. I do the same thing, though, albeit with a temporary file > (and it works). Maybe try `echo`ing the output to a file? This script > emails me the current iptables to make sure fail2ban hasn't gone berserk: > > #!/bin/bash > > # Send the current iptables -L -n output to the postmaster. > > TMPFILE=/tmp/iptables-state.log > MAILADDR="postmaster@example.com" > > echo "To: $MAILADDR" > $TMPFILE > echo "From: root@mx1.example.com" >> $TMPFILE > echo "Subject: mx1 iptables state" >> $TMPFILE > > iptables -L -n >> $TMPFILE > > sendmail -f root@mx1.example.com \ > $MAILADDR \ > < $TMPFILE > > rm $TMPFILE > > It's not very fancy but it does work. If a temp file works for you, it > might help you narrow down the problem. Wouldn't you rather use a one-liner like this? iptables -L -n | mail -s "mx1 iptables state" -a "From: root@mx1.example.com" postmaster@example.com - Grant [-- Attachment #2: Type: text/html, Size: 4272 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [gentoo-user] crontab questions 2012-12-15 2:36 ` Grant @ 2012-12-15 17:21 ` Michael Orlitzky 0 siblings, 0 replies; 6+ messages in thread From: Michael Orlitzky @ 2012-12-15 17:21 UTC (permalink / raw To: gentoo-user On 12/14/2012 09:36 PM, Grant wrote: > > I got it working in /etc/crontab. Should I file a bug for > http://www.gentoo.org/doc/en/cron-guide.xml to mention that vixie-cron > must be restarted when making changes to /etc/crontab? It says: > > "Note that only Vixie-cron schedules jobs in /etc/crontab automatically." > You shouldn't have to restart vixie-cron, I think it just scans /etc/crontab every so often. > Wouldn't you rather use a one-liner like this? > > iptables -L -n | mail -s "mx1 iptables state" -a "From: > root@mx1.example.com <mailto:root@mx1.example.com>" > postmaster@example.com <mailto:postmaster@example.com> > Even the simple stuff I like to keep in a separate shell script. They're all under version control so that if one server blows up, all I have to do is checkout the git repo and hit `make` on another box and everything will more-or-less work once I emerge @world. I could avoid using a temp file that way, but it ain't broke so I'm not going to fix it. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-12-15 17:23 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-12-11 21:15 [gentoo-user] crontab questions Grant 2012-12-12 3:14 ` Michael Orlitzky 2012-12-12 22:09 ` Grant 2012-12-13 1:01 ` Michael Orlitzky 2012-12-15 2:36 ` Grant 2012-12-15 17:21 ` Michael Orlitzky
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox