XOOPS Cube の管理画面を wget コマンドで

前回までのお話
XOOPS Cube のユーザー一覧を取得したい

XOOPS Cube の管理画面に Linux コンソールから wget コマンドでアクセスして 会員情報を取得する という方法を取ることにしました。

今回はVPSを使いましたが、Virtual Box や Bash on Windows 10 でも大丈夫でしょう。

ログインしてからページを取得

ログインが必要なサイトから情報を取得するには、cookie を使いまわします。

例えば下のようなスクリプトを作ります。

#! /bin/sh
# 第一引数:ユーザID
ID=$1

# ↓環境に合わせてくださ
LOGIN_USER='username'
LOGIN_PASS='password'
XOOPS_ROOT='http://url.to.xoops/'

USERINFO_BASE='UserInfo'
COOKIEFILE='cookies.txt'

# ログインする
wget --keep-session-cookies --save-cookies=${COOKIEFILE} \
     --post-data "uname=${LOGIN_USER}&pass=${LOGIN_PASS}&op=login" \
     ${XOOPS_ROOT}/user.php -q -O /dev/null

# ユーザ情報閲覧ページを取得
wget --load-cookies ${COOKIEFILE} \
     "${XOOPS_ROOT}/modules/user/admin/index.php?action=UserView&uid=${ID}" \
     -q -O ${USERINFO_BASE}_${ID}.html

# ユーザ情報閲覧ページを整形して、ユーザ名とメールアドレスを表示
nkf -w ${USERINFO_BASE}_${ID}.html | sed -ne '
        /UID/{n;n;p}
        /ユーザー名/{n;n;p}
        />メールアドレス</{n;n;p}
' | sed -ne '
        1{
                N;N
                s/\n/,/g
                s/[ \t]//g
                p
        }
'

このスクリプトを第一引数にユーザIDを指定して起動すると、ユーザ情報閲覧ページのHTMLコードが得られます。

$ GetUserInfo.sh 100
100,user100,user100@sample.com

実際は 第一引数に指定するユーザIDも分からないし、分かったところで何百回もこのスクリプトを打つのが面倒なので、ユーザIDのリストも wget コマンドと sed で取得&整形しました。


続きのお話
XOOPS Cube 管理画面から情報を取れなくなった