2012-12-03 46 views
1

我有大約十幾臺服務器,每臺服務器都有crontab,並且有20-50個crontab條目。造成流程失敗的唯一最常見的原因是某人在修復或修補程序期間在cron中註銷了作業,然後忘記取消註釋這些作業。如何在crontab更改時獲取警報?

我想要做的兩件事情來解決這個問題:

  1. 開始使用我們的時間表抑制過程,使用戶能夠抑制時間表沒有實際接觸的crontab。沒什麼不可思議的 - 只需觸摸專用於該過程的目錄中的文件即可。該過程在啓動時檢查該目錄。
  2. 實現一個進程,如果crontab與svn中的備份或當前版本不匹配,將發出警報。

任何人都可以推薦#2的現有解決方案(crontab更改時提醒)?

回答

0

在這種情況下,我會建議比較你想要的文件和實際文件的哈希值。

只需編寫一個發送emailnotification的簡短bash腳本,或者創建一個通知文件或任何你想要的,並讓這個腳本每x秒/分鐘/小時自動運行。

一個可能的腳本可以

if [[ $(md5sum path/to/crontab.backup | cut -d' ' -f1) == $(md5sum /etc/crontab | cut -d' ' -f1) ]] 
then 
    # send your notification 
fi 

這是一個非常簡單的解決方案,以檢查文件是否被更改自上次備份後。

+0

謝謝,我曾考慮過這個實現。我假設它應該運行diff,而不是md5sum;從root運行以避免在crontab被刪除時丟失檢查;並應該能夠從svn/cvs/git/etc中拉出來。但我更喜歡一個非常可靠的工具,以防萬一我忽略了其他任何有用的功能。 – KenFar

+0

也許你可以使用kernel 2.6.13以後的inotify系統。看到http://www.infoq.com/articles/inotify-linux-file-system-event-monitoring – sge

+0

我沒有考慮inotify - 這是一個有趣的想法。但在這種情況下,我沒有表現或準確性問題 - 對crontab的區分不會是一個挑戰。我認爲與svn中的條目差異可能是我最好的選擇。 – KenFar