Linux
根據 grep 結果發送電子郵件
我正在使用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