1
如果服務器上的員工文件夾中的文件發生更改,我想向我們公司的員工發送電子郵件通知。 我有一個腳本,可以在使用inotifywait發送每個文件更改的電子郵件時正常工作。 我想要做的是在多個文件上傳(可以說10個JPG正在上傳到某人的員工文件夾)只發送一封電子郵件。在受監視目錄中的文件更改上發送電子郵件
該腳本將每個文件變更電子郵件:
inotifywait --recursive --exclude '.DS_Store' -e create -e moved_to -m /media/server/Staff/christoph |
while read path action file ; do
echo "The file '$file' appeared in directory '$path' via '$action'"
sendEmail -f [email protected] -t [email protected] -s smtpout.secureserver.net:80 -xu [email protected] -xp password \
-u ""The file $file appeared in your directory"" -m ""To view your file go to $path""
done
什麼是去了解這個最聰明的方法是什麼?讓我們說等待2分鐘的進一步輸入是否有意義?
順便說一下,我使用sendemail,因爲端口25被ISP阻止。
謝謝安迪,我正在考慮創建一個日誌文件併發送出去。問題在於,自從我們開始製作視頻並且文件很大時,文件傳輸可能需要長達20分鐘的時間。我想知道是否可以從netatalk服務器獲取輸出以查看文件傳輸是否正在進行?我怎樣才能防止腳本發送多封電子郵件? – mrchrister
取決於文件傳輸的工作方式,您可能會從查看「創建」更改爲「close_write」。如果文件傳輸是通過單個文件打開和關閉完成的,這將工作。爲此使用數據庫,您還可以添加一個標誌,確定電子郵件是否已發送,並檢查跟蹤cron作業運行之間的文件大小和修改時間,並且僅在大小和修改時間停止後才發送電子郵件改變。 –
再次感謝安迪!我正在嘗試一個日誌文件。 close_write做了奇怪的事情..就像不斷髮布文件夾中的每個文件,所以我猜這在這種情況下不起作用。由於數據庫和SQL可能遠遠超出我的頭,我有輸出寫入日誌文件。在日誌文件中檢查新行的好方法是什麼,如果不同,請發送電子郵件給用戶?我會使用tail -n 1,然後是if語句嗎? – mrchrister