我想解析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