1

「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」ファイルが見つかりませんでした。:/

理想的には、実行中に何が起こっているかを画面に表示し、可能であれば、結果をテキストファイルに出力することもできます。

4

1 に答える 1

1

デバッグの目的で、コマンドを使用できますset -xv(コマンドをの下に置くことができます#!/bin/bash)。

.htaccessを記述していないスクリプトの場合、犯人はifステートメントにあると思います。

条件では、.htaccessが存在し、「AddHandler cgi-script」が含まれていない場合は何かを実行できますが、ファイル.htaccessが存在しない場合は、何もせずにif条件が終了します。

これを試して:

if [[ ! -e "$FOLDER/.htaccess" || ! $(grep "AddHandler cgi-script" "$FOLDER/.htaccess") ]]

したがって、ファイルが存在する場合は「AddHandler cgi-script」が追加され、ファイルが存在しない場合は要求された文字列でファイルが作成されます。

于 2013-03-26T14:08:43.713 に答える