Linux

根據 grep 結果發送電子郵件

  • June 22, 2010

我正在使用WebInject(CLI 而非 GUI)來測試線上 Web 服務。我打算和第三方一起去,直到我找到這個小寶石並意識到我可以節省什麼……

我想要完成的是 grep WebInject (Perl script) 的結果。如果它找到一個模式,然後將結果通過管道發送到郵件。我是新手,不太確定如何編寫評估結果並將其發送到郵件的邏輯。

這是我到目前為止所擁有的:

$ perl webinject.pl | grep ‘測試案例失敗’

如果 grep 找到匹配項,我只想發送電子郵件,否則不應發送電子郵件。我想用 cron 設置它以 10 或 15 分鐘的間隔執行。

作為旁注, grep 是否能夠從匹配模式中獲取前導字元和尾隨字元?

**更新 1:**找出前導行和尾隨行(-A # -B #)

非常感謝!

看看這個答案echo based on grep result

幾乎一樣,選擇更適合您需要的答案然後抑制 echo No 部分並通過電子郵件命令替換 echo yes 部分

重新編碼前導和尾隨字元,您可以使用 -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 someone@domain.tld
fi

引用自:https://serverfault.com/questions/153666