SSHで一括.htaccess編集を実行する方法はありますか?
次のコンテンツを含む複数のウェブサイトがあります。
/home/user/website1/public_html/.htaccess
/home/user/website2/public_html/.htaccess
...
ファイルの一番下にいくつかの新しい行を追加したいです(全体の.htaccessを置き換えるのではありません)。たとえば、次のようになります。
<FilesMatch ".+\.php$">
Require all denied
</FilesMatch>
これを行う方法はありますか?
答え1
別のオプションはシェルスクリプトを使用することです。
#!/bin/sh
for htaccess in home/user/website*/public_html/.htaccess
do
cat >> "$htaccess" << 'EOF'
<FilesMatch ".+\.php$">
Require all denied
</FilesMatch>
EOF
done
スクリプトは、/home/user の下の「website」で始まる各ディレクトリを繰り返し、public_html/.htaccess ファイルに必要な行を追加します。私は一つを使う先頭ここのドキュメントこのように、シェルは何も解釈するのに「助けにはならない」ことはありません。
前の内容と追加された内容を空行で区切りたい場合は、<Filesmatch
挿入したい部分の前(cat
行の直後)に挿入してください。
答え2
まさにここに。コードを書いて、sshの後にサーバーで実行するだけです。たとえば、Pythonでは次のようになります。
#追加したい行 行=""" <FilesMatch ".+\.php$"> すべてのリクエストを拒否 </ファイルマッチング> 「」」 # 追加するファイル ファイル=[] files.append('/home/user/website1/public_html/.htaccess') files.append('/home/user/website2/public_html/.htaccess') # ファイルに行を追加 ファイル内のファイルの場合: f=開く(ファイル、'ab') f.書き込み(行) f.閉じる()