2016年5月31日火曜日

【備忘録】複数サイトのプラグインバージョン調べ - WP-CLI編 -

JetPackに脆弱性が見つかったみたいですね。
更新をって簡単にいいますが、バックアップ > 更新 > 検証 という手順が必要で多数のサイトを管理している場合、全部マニュアルでやっていられません。特に現状のバージョンチェックのためだけにわざわざ WordPressにログインなどナンセンス!

WP-CLIを使う


1つや2つのサイトなら

cd WordPressインストールフォルダ
wp  plugin  list | grep jetpack 


cd WordPressインストールフォルダ
wp  plugin  get  jetpack  | grep version

とかで手動チェックできるでしょう。でも多数あったらそれも大変です。

一括バージョンチェックできる CSH スクリプトを作ってみる


こういう時、サーバー管理者ならちょちょいと一括チェックツールを作っちゃうでしょう。ここでは簡易のツールについて紹介しておきます。


筆者は
  • BackWPUPプラグインによるバックアップ > プラグイン更新 >  本体更新 > データベース更新 > プラグイン更新
を WP-CLIで一括 cronするツールを作成しているので、その延長線上で作成してみました。


チェック対象ファイルを生成


WordPressのフォルダ:◯◯
WordPressのフォルダを設置している上部フォルダまでの絶対パス:/△△/
WordPress本体の言語:ja
BackWPUPプラグインのジョブID:1
※WordPressフォルダ:/△△/◯◯

と仮定すると

◯◯:1:ja:/△△/

というのをWordPressの数だけ hogehoge.dat ファイルに書き出しておきます。
今回利用するのは、◯◯と/△△/になります。

※ # より右側はコメントとして扱います。

# 説明1
◯◯:1:ja:/△△/
# 説明2
●●:2:en:/■■/

とまぁそういう記述もOK。

スクリプト全体

WP-CLIである wp の場所は /usr/local/bin/wp にインストールしていることにしています。他の場所なら変更してください。

all-WP-plugin-version-check.csh
#!/bin/csh -f 

set WP_CLI  = "/usr/local/bin/wp"
# 以下は、hogehoge.dat のある絶対パス(hogehoge.datのあるところで 
# pwdをすると絶対パスのフォルダが分かる)をいれます。

set target_db = "/◯◯/hogehoge.dat"

if ("$1" == "" ) then
 echo "Usage: $0 plugin name."
 exit
endif

set WP_DATA  = `grep -v '#' $target_db`

foreach list ($WP_DATA) 
  set WP_NAME = `echo $list | awk -F':' '{print $1}'`
  set WP_DIR  = `echo $list | awk -F':' '{print $4}'`

echo -n "$WP_NAME : "
cd $WP_DIR 
set check = `$WP_CLI plugin list | grep $1 | cut -d '|' -f 4 | awk  '{print $1" : "$4
}'`

if ("$check" == "") then
  echo "not installed"
else
  echo $check
endif

end

以上を入れて、
  csh -f all-WP-plugin-version-check.csh jetpack
とすると、

◯◯ : jetpack : 4.0.3
●● : jetpack : 4.0.3
■■ : not installed

 などと表示されますので、どのWordPressになんのプラグインがどのバージョンでインストールされているのか、されていないのか一目瞭然です。

そのうち機会があれば、
  • BackWPUPプラグインによるバックアップ > プラグイン更新 >  本体更新 > データベース更新 > プラグイン更新
のツールも紹介できればと思います。

2016年5月31日

0 件のコメント:

コメントを投稿

Google+ Badge