[bash]コマンドラインでWordPressの最新版をダウンロードする


atsuiみなさんこんにちは。WordPressの最新版、きちんと確認してますか?暑くてブラウザ開くのかったるい?それならコマンドラインで確認させ、最新版があったらメールで飛ばすようにしてみましょう。

まずはソースコードを見てみましょう。

#!/bin/bash
set -e

## Environment
DLSITE=http://ja.wordpress.org/
WPDIR=wordpress
DLDIR=${HOME}/src/${WPDIR}
DLFILE=latest-ja.tar.gz
VFILE=${WPDIR}/wp-includes/version.php
VERSION=${DLDIR}/version
YYYYMMDD=$(date +%Y/%m/%d)
MAILTO=root

## Initialize
[ ! -d ${DLDIR} ] && mkdir -p ${DLDIR}
cd ${DLDIR}

## Now Version record
ls -l | egrep ^d | awk '{print $NF}' | 
egrep '(^[0-9].)' | tail -1 > ${VERSION}

## WordPress GET and Expand

wget ${DLSITE}/${DLFILE} && tar xzf ${DLFILE} ${VFILE} > /dev/null 2>&1
VDIR=$(egrep '(^$wp_version)' ${VFILE} | awk '{print $NF}' | sed -e "s/'//g;s/;//g")

[ ! -d ${VDIR} ] && mkdir -p ${VDIR} && mv ${DLFILE} ${VDIR}
[ -d ${WPDIR} ] && rm -fr ${WPDIR}
[ -f ${DLFILE} ] && rm -f ${DLFILE}
[ -L current ] && rm -f current
ln -s $(ls -l | egrep ^d | awk '{print $NF}' | tail -1) current

ls -l | egrep ^d | tail -1 | awk '{print $NF}' | 
diff -y - ${VERSION} > /dev/null 2>&1 || 
ls -l | egrep ^d | tail -1 | awk '{print $NF}' | 
awk '{print "WordPress",$1,"Released"}' | 
${mail} -s "${YYYYMMDD} WordPress Downloaded" ${MAILTO}

ダウンロード対象のファイルは http://ja.wordpress.org/latest-ja.tar.gz で、 ${HOME}/src/wordpress 以下にwgetでダウンロードします。最新バージョンかどうかを確認するために、一度アーカイブを展開し、 wp-includes/version.php の中身を見てバージョンの確認をします。

また、ダウンロードしたものが最新バージョンかどうかを確認したあとは、バージョン番号のディレクトリに「current」というシンボリックリンクを張る機能をつけ、過去にダウンロードしたものよりも最新版をダウンロードしてきたら、変数MAILTOに指定したメールアドレスへメール通知します。mkdirやegrep、、awk、sed、tail、ls、rm、diff、ln、tarコマンドは最初からインストールされていることが多いですが、wgetコマンドやmailコマンドは、それぞれwgetパッケージ、mailxパッケージがインストールされているか確認したほうがよいでしょう。

あとはcronに登録しておけば、ブラウザで確認しに行かなくてもWordPressの最新版を自動的に確認することができます。

ね、簡単でしょう?

[amazonjs asin="479736758X" locale="JP" title="本格ビジネスサイトを作りながら学ぶ WordPressの教科書"]