开发者社区> 问答> 正文

获取完整的当前crontab行,并为每行创建唯一的结果电子邮件标头(来自,主题等)

我在Linux机器上有一个带有许多脚本的巨型crontab。我需要能够a)更改主题和/或cronjob结果电子邮件的主题,因为默认值太长了。b)通过集中式解决方案。c)仅需要对crontab本身进行最小的更改。

例如下面的crontab行:

0 */3 * * * /path/to/script1 | /path/to/script2 | /path/to/script3

创建此电子邮件主题:

Cron <cronuser@myserver> /path/to/script1 | /path/to/script2 | /path/to/script3

我的收件箱中的哪个被截断到script1路径中的某处。(而且crontab中的许多行都明显更长。)

我尝试过的选项: 管道发送邮件和设置主题等(每行(-E保留cron的默认“仅发送时发送”行为)):

0 */3 * * * /path/to/script1 | /path/to/script2 | /path/to/script3 2>&1 | mail -E -s "test subject" -S from="Cron Script2 <cronuser@myserver.com>" recipient@myserver.com

这个“有效”,但我想将更改集中在一个地方,并尽量减少添加到每个cron行中的可读性

使用shell:(noop)命令,该命令首先出现在主题中(请注意:之后的空格很重要!):

0 */3 * * *  : Descriptive Words; /path/to/script1 | /path/to/script2 | /path/to/script3

不幸的是,cron在主题行的“描述性词”之前放置了太多不必要的内容,因此这仍然无法使用。

我要创建的内容: 通用的东西,像这样:

0 */3 * * * /path/to/script1 | /path/to/script2 | /path/to/script3 2>&1 | coolmailer.pl

coolmailer.pl可以通过在该cron行上获取命令来构建主题行,清除路径和参数,然后通过电子邮件将其发送给我(仅在任何脚本失败的情况下,才可以通过电子邮件发送给我):

SUBJECT: script1 | script2 | script3
FROM: Cron Script3<noreply@myserver.com>
(actual results of the command /path/to/script1 | /path/to/script2 | /path/to/script3)

另外,我也想说一下前面的命令(script1或script2)是否在主题行上失败了。

事实证明,这比我想象的要复杂得多。

展开
收起
祖安文状元 2020-01-05 19:08:39 472 0
1 条回答
写回答
取消 提交回答
  • 确定管道 如果您始终coolmailer.pl使用唯一的参数进行调用,则可以简单地从cronjobs列表中对其进行grep调用:

    > > #!/usr/bin/perl -wT
    
    $ENV{PATH} = '/sensible:/path';
    
    my ($pipeline) = grep /\|\s+$0\s+$ARGV[0]/, `crontab -l`;
    $pipeline ||= "oops";
    
    # ... mung $pipeline ...
    
    # ... do mail stuff ...  
    
      
    检
    查```  
    管道故障
    如果您从以下位置重写cronjob条目:
    
    ```js
    /path/to/script1 | /path/to/script2 | /path/to/script3 2>&1 | coolmailer.pl
    
    

    至:

    coolermailer /path/to/script1 \| /path/to/script2 \| /path/to/script3
    
    

    那么您可以手动构建管道并控制管道成员状态信息。(这也直接为您提供了管道,尽管您随后必须构造它才能运行。)

    例如,对于bash实现,您可以使用eval和PIPESTATUS。使用Perl,您可以results()在IPC :: Run中使用

    2020-01-05 19:08:59
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载