我正在嘗試創建一個腳本來監視日志檔案,如果出現錯誤,它會發送一封帶有 python 的電子郵件。該腳本有效,但一旦檢測到錯誤,就會開始發送垃圾郵件。有沒有辦法避免這種情況?
# cat /usr/local/bin/monitor.bash
#!/bin/bash
tail -fn0 /var/log/syslog | while read line ; do
echo "${line}" | grep -i "error" > /dev/null
if [ $? = 0 ] ; then
python emailsend.py
fi
done
提前致謝!
編輯:我計劃將此作為服務運行,以持續監控日志。一旦檢測到錯誤,我希望它發送一次電子郵件,然后它會重新啟動一些服務(尚未將其添加到腳本中)并繼續監視檔案直到它輪換。我希望這可以縮小范圍。
uj5u.com熱心網友回復:
如果我正確理解了代碼的邏輯,您可以在日志中加入一些行以防止進入if子句并重新啟動服務。
# cat /usr/local/bin/monitor.bash
#!/bin/bash
tail -fn0 /var/log/syslog | while read line ; do
echo "${line}" | grep -i "error" > /dev/null
if [ $? = 0 ] ; then
python emailsend.py
# append line to the log to prevent grepping of 'error'
echo 'dummy line' >> /var/log/syslog
# restart your services here
fi
done
希望能幫助到你。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/355076.html
上一篇:如何將stdout和stderr分別管道到兩個不同的行程,同時讓它們出現在終端中?
下一篇:帶有下拉選單的可變表單
