看着自己的FTP服務器上的日誌是一個好主意,尤其是如果你有很多子目錄進行掃描。 A tail
避免了輪詢解決方案的開銷,並且會精確地告訴您在哪裏查找文件。但是,我認爲,使用shell比使用PHP更容易實現。
我有一個服務器,該服務器產生的日誌,其中包括像這樣的線路上vsftpd的:
Fri Feb 24 05:37:43 2012 [pid 86561] [bob] OK UPLOAD: Client "10.2.3.4", "/path/to/file.txt", 6036 bytes, 32.77Kbyte/sec
要觸發基於此行動,我可以用一個shell腳本如下所示:
#!/bin/sh
tail -F /var/log/vsftpd.log | while read junk junk junk junk junk junk junk user status command junk sourceip file junk; do
if [ "$command" = "UPLOAD:" -a "$status" = "OK" ]; then
if echo "$file" | grep -q '/path/to/.*\.txt'; then
# do some triggered action, like:
sql="INSERT INTO log VALUES ('$user', '$sourceip', '$file')"
if mysql -uusername -ppasswd -Ddbname -e"$sql"; then
filename="`echo \"$file\" | sed -r 's/\"(.*)\",$/\\1/'`"
mv "$filename" /path/to/donefiles/
fi
fi
fi
done
這可以使用您的操作系統的正常啓動工具啓動,或由cron使用@reboot
特殊啓動。
添加錯誤處理的味道。
聽起來相當不錯。必須檢查出來。同時謝謝你:-)! – thedom 2012-03-06 17:40:56