我想解析vsftpd日誌做一些額外的處理上成功上傳的文件。無法執行ls使用shell腳本
username
將是用戶,所以我創建的主目錄 filename
是日誌文件名:它給出了一個靠不住的結果,即「/foo.txt」但是,這並不重要
#!/bin/sh
sudo tail -F /var/log/vsftpd.log | while read line; do
if sudo echo "$line" | grep -q 'OK UPLOAD:'; then
username=$(echo "$line" | cut -d" " -f8 | sed 's/\[\(.*\)\]/\1/')
filename=$(echo "$line" | cut -d, -f2 | sed 's/^[ \t]*//')
home="/home/vsftpd/$username"
if sudo ls "$home$filename" &> /dev/null; then
# do something with $filename
echo "some text"
fi
fi
done
當文件上傳時,我期望文本「一些文本」。我從來沒有拿到,而不是我可以看到它的報道:
ls: cannot access /home/vsftpd/user1"/foo.txt": No such file or directory
雖然我可以在shell中運行以下命令:
$ sudo ls /home/vsftpd/user1"/foo.txt"
/home/vsftpd/user1/foo.txt
我猜權限相關的,但我有它運行作爲sudo,我給了目錄完全訪問權限。有任何想法嗎?
當然!感謝您深入瞭解vsftpd日誌。我只是用下面的代碼來修復它:'filename = $(echo「$ line」| cut -d,-f2 | sed's/^ [\ t] * //'| tr -d'「')' – Tom 2013-03-21 20:51:54