我想在“public_html”(但不是public_html)下的一整串可能的子目录中找到所有用户帐户的所有“.htaccess”文件(如果文件存在,如果不创建)。基本上可以在任何远程类似于可能包含图像的目录中找到它。
这是我的代码:
#!/bin/bash
cat /etc/domainusers | cut -f1 -d: | while read USER; do
find /home/$USER/public_html/ -type d -regex ".*\/public_html\/.*\(img.\|pic.\|pics.\|image.\|images.\|Image.\|Images.\|Pic.\|Pics.\|Img.\|picture.\|pictures.\|Picture.\|Pictures.\|upload.\|Upload.\|download.\|Download.\|Gallery\|gallery\|Galleries\|galleries\|import.\|Import.\|Thumbnail.\|Thumbnails.\|thumbnail.\|thumbnails.\|wpThumbnail.\|thumb.\|Thumb.\)" | while read FOLDER;
do
if [[ -e "$FOLDER/.htaccess" && ! $(grep "AddHandler cgi-script" "$FOLDER/.htaccess") ]]; then
echo -e "AddHandler cgi-script .php .pl .py .jsp .asp .htm .html .shtml .sh .cgi .php5 .php4 .php3 .phps .txt .bat .cmd .rb .txt .msi .exe .xml .xhtml\nOptions -ExecCGI -Indexes" >> "$FOLDER/.htaccess"
chattr +ia "$FOLDER/.htaccess"
fi
done
done
虽然上面的脚本运行正常,但它实际上并没有做我想要它做的事情。我检查了一个用户的图像目录,并没有在那里找到任何“.htaccess”文件。:/
理想情况下,我还想在屏幕上看到它在执行过程中发生了什么,并且如果可能的话,还将结果输出到一个文本文件。