我正在使用WebInject (CLI而不是GUI)来testing在线Web服务。 我打算和第三方一起去,直到我find了这个小gem,并意识到我可以拯救…
我想完成的是grep WebInject(Perl脚本)的结果。 如果它find一个模式,然后pipe结果给邮件。 我是新手,不太清楚如何编写评估结果并将其发送到邮件的逻辑。
这是我迄今为止:
$ perl webinject.pl | grep'TEST CASE FAILED'
如果grep发现匹配,我只想发送一封邮件,否则不应该发送邮件。 我想用cron设置它以10或15分钟的间隔运行。
作为一个侧面说明,是grep能够抓住匹配模式的前导和尾随字符?
更新1:找出前导线和尾随线(-A#-B#)
非常感谢!
基于grep结果来看看这个答案echo
这几乎是相同的,采取答案,更好地适合您的需要,然后抑制回声没有部分,并通过电子邮件命令的回声是部分
调整前导字符和尾随字符可以使用-C选项或-A和-B(-C是-AX -BX)
-A NUM, --after-context=NUM Print NUM lines of trailing context after matching lines. Places a line containing -- between contiguous groups of matches. -B NUM, --before-context=NUM Print NUM lines of leading context before matching lines. Places a line containing -- between contiguous groups of matches. -C NUM, --context=NUM Print NUM lines of output context. Places a line containing -- between contiguous groups of matches.
如果我明白你想要做什么,你可能会喜欢以下例子
perl webinject.pl > /tmp/webinject_result.txt if grep --quiet 'TEST CASE FAILED' /tmp/webinject_result.txt; then grep -B 20 -B 2 'TEST CASE FAILED' /tmp/webinject_result.txt | mail [email protected] fi
这是一个应该工作的单线程:
perl webinject.pl | grep 'TEST CASE FAILED' 2>&1 > /tmp/grep.log && /usr/bin/mail -s "grep found something" [email protected] < /tmp/grep.log
这是一个更通用的情况,有多个命令:
{ COMMAND1 ; COMMAND2 |grep 'your string here' ; } 2>&1 > /tmp/logfile && /usr/bin/mail -s "$SUBJECT" $MAILTO < /tmp/logfile
&&后的代码只有在花括号内的命令find匹配时才会激活(返回码为零,表示成功)。 我使用2>&1来确保我不会错过任何输出。
您也可以将这些信息输出到系统日志。 请参阅更好地loggingcronjobs? 发送cron输出到syslog?