複数のWordPressサイトを同一サーバーで運用する場合、各サイトのバージョン管理は煩雑になりがちです。
フォルダ構造をたどって個々のバージョンを確認したり、アップデート作業を行うのは非効率であり、人的ミスも起こりやすいでしょう。
複数のサイトのコア、テーマ、プラグインのバージョンを一元管理し、把握することは、サイト全体の安定運用に不可欠です。
また、テスト環境においては、一括アップデートを行い常に最新に保つことで効率が大幅に向上するのではないでしょうか?
https://github.com/web-soudan/wp-security-audit-on-jp-hosting
# 検索対象のディレクトリをセット
search_dir="$1"
# 引数が渡されていない場合はエラーメッセージを表示して終了
if [ -z "$search_dir" ]; then
echo "エラー: 対象ディレクトリを引数でセットしてください"
echo "curl xxxxx -s /example.com/public_html"
echo "Usage: $0 <search_directory>"
exit 1
fi
# 実行するWPコマンドを関数化
execute_wp_commands() {
local wp_dir=$1
# 実行するコマンドのリストを配列で設定
wp_commands=(
"echo SiteURL : $(wp option get home --path=$wp_dir)"
"echo Version : $(wp core version --path=$wp_dir)"
# "wp core verify-checksums"
# "wp plugin verify-checksums --all"
"find $wp_dir/wp-content/uploads/ -name \"*.php\""
)
# コマンドをまとめて1つのシェルコマンドにする
combined_command=""
for wp_command in "${wp_commands[@]}"; do
combined_command+="$wp_command && "
done
# 最後の '&&' を取り除く
combined_command=${combined_command%&& }
# wp-config.phpが存在するディレクトリに移動
cd "$wp_dir"
# すべてのコマンドをまとめて実行
echo --------------------------------------------------
echo "Executing combined commands in $wp_dir"
eval "$combined_command"
echo --------------------------------------------------
}
# 再帰的にwp-config.phpが存在するディレクトリを検索
find "$search_dir" -type f -name "wp-config.php" | while read wp_config; do
# wp-config.phpが存在するディレクトリを取得
wp_dir=$(dirname "$wp_config")
# WPコマンドを実行する関数を呼び出し
execute_wp_commands "$wp_dir"
done
19行目以降に追加したい処理があれば追加変更
21,22行目のコメントアウトを外すとverify-checksumsでcore,pluginの公開されているプラグインのチェックが行えます。
23行目は /wp-content/uploads/ 以下にphpファイルが無いかを検索(改竄されてこっそりファイルを置かれることもあり、wp core verify-checksums では対象にならないため追加しています。)
追加例) wp core verify-checksums が失敗した時、WordPressコアをダウンロードし直す
"wp core verify-checksums || wp core download --locale=ja --force --path=$wp_dir"
レンタルサーバーにSSHログインしcurlしてそのままgetして実行する場合は
curl https://raw.githubusercontent.com/web-soudan/wp-security-audit-on-jp-hosting/refs/heads/main/check-wp.sh | bash -s ~/
このように、bash -s の引数で検索対象のディレクトリを指定
(対象を~/ でホームディレクトリにするとメールやバックアップが含まれる場合は適時変更してください)
--------------------------------------------------
Executing combined commands in /home/example.com/puiblic_html/
SiteURL : https://example.com
Version : 6.6.2
--------------------------------------------------
--------------------------------------------------
Executing combined commands in /home/sub.example.com/puiblic_html/
SiteURL : https://sub.example.com
Version : 6.6.2
--------------------------------------------------
他にもこんなふうにしたら良いんじゃない!?的なアイデアがあればプルリク/イシューお待ちしております。
https://github.com/web-soudan/wp-security-audit-on-jp-hosting