学生実験 1 : Shell script と gnuplot
- 更新情報目的
- 進め方
- shell script の基礎: Level 1-2
- 引数の使い方: up2html.sh
- サムネイル生成1: thumbnailX.sh: Level 3
- ログ解析: Level 4
- 課題と提出方法
- 参考文献・サイト
- 更新情報
-
- [2005-05-10] Level 4 の access_log について修正.
- 目的
-
- (楽をするために)なるべく自動化を.
- ミスを防ぎやすくなる.
- 作業記録としても有用.
- 進め方
-
- shell script の基礎: Leve 1-2
- Shell と Shell Script by 白土先生資料(課題2まで)
- シェルスクリプト・サンプル
- 引数の使い方: up2html.sh
- サムネイル生成: thumbnailX.sh: Level 3
- ログ解析: Level 4
- 課題と提出方法
- shell script の基礎: Leve 1-2
- 日頃良く使う一連のコマンド群をより簡単に実行したい
- 複数のファイル/ディレクトリに対しある処理を実行したい
- 自動化したい
- Level 1
- 上記ページの課題1. レポートにはコメント付きでソースファイルを記載すること.
- Level 2
- 上記ページの課題2. レポートにはコメント付きでソースファイルを記載すること.
- サンプル内の up2html.sh は,引数を利用して異なる処理を実行するシェルスクリプトの例である.(動作確認用スクリプトなので,echo で実行内容を出力させている)
- [ 参考 ] デーモン起動時にも case を用いたスクリプトを利用しており,Linux系OS(e.g., pw/nirai/kanai/naha) では /etc/rc.d/init.d/ にある.
- thumbnail1.sh: SUFFIX で指定した拡張子を持つ画像ファイルをリストアップ.
- thumbnail2.sh: SUFFIX で指定した拡張子を持つ画像ファイルを表示するHTMLファイルを生成.
- thumbnail3.sh: SUFFIX で指定した拡張子を持つ画像ファイルの縮小画像を生成し,表示するHTMLファイルを生成.
- Level 3
- thumbnail3.sh をベースに,1ページ内に納める写真数(photo_num)を指定し,自動的にページ分割するように拡張せよ.(下表参考)
photo_num pagename (photos) photo_num=1 - page1.html (photo1)
- page2.html (photo2)
- page3.html (photo3)
- page4.html (photo4)
- page5.html (photo5)
photo_num=2 - page1.html (photo1, 2)
- page2.html (photo3, 4)
- page3.html (photo5)
photo_num=3 - page1.html (photo1, 2, 3)
- page2.html (photo4, 5)
- Level 4.1
- access_log に記載されているアクセス総数をカウントせよ.
[Tips] man wc
- Level 4.2
- 日毎のアクセス数,IP毎のアクセス数をカウントせよ.
[Tips] man grep, man uniq
- Level 4.3
- Level 4.2 で求めたカウント数を棒グラフ作成せよ(何れか一つを必須とし,残りはオプションとする).
- 日毎アクセス数:横軸日付,縦軸アクセス数
- IP毎アクセス数:横軸IP,縦軸アクセス数(アクセス数トップ10のみで良い)
[Tips] gnuplot による自動グラフ生成
# ファイル「daily.data」に日毎アクセス数を記載してある場合 echo "set terminal png" > daily.gnuplot echo "set output \"daily.png\" >> daily.gnuplot echo "plot \"daily.data\" with boxes >> daily.gnuplot gnuplot < daily.gnuplot
- Level 4.4(オプション)
- 日毎アクセス数の中で最もアクセ数の多かった日について,時間あたりのアクセス数推移図を作成せよ.
- Level 4.5(オプション)
- Level 4.1-4.4 について,結果をHTMLファイルとして出力せよ.
- Check points, options
-
- 任意のファイル名について実行出来るか?
- 任意の日付について実行出来るか?
- pw にてリアルタイムで解析するにはどうすれば良いか?
- pw にてバッチ処理(一日毎に解析など)するにはどうすれば良いか?
- 課題
-
- 全員必須:全ての Level にトライし,レポートとしてまとめよ.ただし,Level 4 は,4.3 のグラフ作成(1つ)までを必須とする.
- 提出方法
-
- 1人1レポート提出.
- レポートは LaTeX で作成し,印刷物を提出すること.
- 表紙に曜日を含める事.
- 提出期限:翌週実験開始ベルの鳴る前まで(レポートボックス最上段真ん中).それ以降は705室へ.
shell script の基礎
シェルスクリプトの基本は「コマンドを並べる事」ただこれだけである. C/Java等のコンパイラ言語で書くほどではないが[ 資料 ] Shell と Shell Script by 白土先生資料(課題2まで)
シェルスクリプトサンプル
[ サンプル ] sample-script.tar.gz
引数の使い方: up2html.sh
サムネイル生成
ログ解析
自分の学籍番号の pw にログインし,httpd へのアクセスログを各自ローカルマシン内に保存せよ.
ダウンロードした sample-script 内にある log/access_log を利用せよ.
httpd へのアクセスログは /var/log/httpd/ にあり,最新は access_log である.
access_log には「アクセス先IP,時刻,メソッド,リクエストのステータスコード」等が含まれている(参考:Apache 1.3 ドキュメント).
このアクセスログを下記の要領で解析するためのシェルスクリプトを作成せよ.