我正在尝试解析 vsftpd 日志以对成功上传的文件进行一些额外的处理。
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 运行,并且我已授予目录完全访问权限。有任何想法吗?