- 前回までのお話
- 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 で取得&整形しました。