[Exp2015]シェルスクリプト課題

提出について

  • 提出期限: 09/02 (水) 23:59
  • 修正期限: 09/10 (木) 23:59

レポートの作成方法

  • ITPASS サーバでレポートを公開するには を参照してください. また, 簡単なレポートの書き方指南 も良く読みましょう.
  • レポートの一番上に以下のことを必ず明記してください.
    • タイトル (例: ITPASS 実習レポート1)
    • 名前
      • 学籍番号は書かないでください.
    • 担当情報実験機名 (例: joho01)
  • レポートの HTML ファイルの名前は index.html にしてください. 複数の HTML ファイルを作る場合は, 以下の要件を満たすようにしてください.
    • index.html を表紙, 目次とする
    • どの HTML ファイルも index.html との相互リンクが張ってある
  • レポートのテンプレート を置いてあります. 自由に使ってもらってかまいません.
  • HTML の書き方については実習の時間内では解説しません. Web や書籍などで書き方を調べてください. 上記のテンプレートを参照するのもよいでしょう. これもレポートの一環としてがんばってください.
  • 問題の難易度を高めに設定しています. 解けない場合は, 未完成のスクリプトを提出し, どこまでできて, 何につまづいたかを詳しく解説してください. 問題そのものができていなくても, きちんとした解説があるレポートには高い評価を与えます.
  • 自力で頑張っても分からない場合は, 他の人が提出したレポート (実習のメーリングリストに投げられたレポート提出報告メールに 書かれている (はずの) URL から見られます) を参考にすることを推奨します. その場合, 参考にしたレポートを参考資料に挙げるようにしてください. また, 丸写しにするのではなく, 自分なりの改良も加えましょう.
  • 2009 年のレポート課題, 2010 年のレポート課題, 2011 年のレポート課題 , 2012 年のレポート課題 , 2013 年のレポート課題 , 2014 年のレポート課題も参考にしてみてください.

授業時間外のレポート作成について

  • 自宅, 学内から ITPASS サーバ (ika-itpass) にログインする場合, [TEBIKI]SSHサーバへの公開鍵認証によるログイン を参考にして下さい.
    • Windows からの接続については, こちら

      • [TEBIKI]Tera Term を用いた SSH サーバへのログイン
      • [TEBIKI]Xming を用いた X (ウィンドウ) の飛ばし方
      • [TEBIKI]ITPASS サーバへのファイル転送方法

      を参考にすると良いでしょう.

    • なお, 学外からは情報実験機 (johoXX-itpass) に直接ログインすることはできません. 学外からは itpass サーバ (itpass.scitec.kobe-u.ac.jp) にログインし, itpass サーバから情報実験機に ssh でログインしましょう.
  • シェルスクリプトを作って実行するだけなら学内の Mac でもできます.
  • 507 号室にある自分の担当マシンは, 部屋の使用予定がない限り, 許可なく使ってもらってもよいです. ゼミなどで使用している場合も, その場で許可をとってもらえば使用してかまいません.
  • 507 号室への入室にあたり事前に許可は不要ですが, 鍵がかかっていて入れないことがあります. 希望者には鍵を貸し出しますので, TA にご一報ください.
  • 部屋を使用するときには, 506 号室 もしくは 508 号室にいる人に一言断ってから使用してください. [Exp2015]実習部屋(507号室)の使い方 もよく読んでください.

レポートの提出方法

ファイルを置く

今回のレポートは全て ITPASS サーバ (ika-itpass) の ~/public_html/report01/ 以下に置いてください. 置き場所となるディレクトリは必要に応じて自分で作ってください.

情報実験機で作ったファイルを ITPASS サーバに転送するには scp というコマンドを使うとよいでしょう. 詳しくは man を見てください. 各ファイルの置き方は以下のようにしてください.

  • html ファイルは ~/public_html/report01/ 以下に置く.
  • シェルスクリプトは ~/public_html/report01/scripts/ 以下に置く.
  • 結果として出力されたファイルは ~/public_html/report01/results/ 以下に置く.
  • 注意: 問題として配布するデータファイルは置かなくても結構です. ただし, どこからどうやって入手したかはレポート本文に明記しておきましょう.

アップロード確認

ブラウザから全部のファイルにアクセスできるか確認してみましょう. 例えば, ITPASS サーバ (ika-itpass) では, ~/public_html/report01/index.html に対応する URL は

http://itpass.scitec.kobe-u.ac.jp/~(自分のアカウント名)/report01/index.html

になります.

提出完了の報告

提出期限までに以下のメールを送ってください. 内容を確認した後, 修正すべき点があればその旨を連絡します. 修正完了後, 再度メールで報告してください. こちらから, レポート提出完了のメールが送られた時点で レポートを提出したことになります.

  • メールの内容
    • 件名
      • 「ITPASS実習レポート ??/?? 出題分 (自分の氏名)」
    • 宛先
      • itpass のメーリングリスト
    • メール本文に必ず記入すること
      • 情報実験機番号
      • 氏名
      • レポートの URL

必須課題

問題 1

暗号化された文を解読するスクリプト

文字列をアルファベット順に n 文字ずらした暗号があります ( 例: 3 文字ずらす abc → def ). 今, このように暗号化した単語が入った 3 つのテキストファイル (kadai1-1_data.txt, kadai1-2_data.txt, kadai1-3_data.txt) があります. テキストファイルのなかにある単語をそれぞれ 1 文字, 2 文字, … , 26 文字ずらすスクリプトを作成して下さい. ある文字数ずらすと, 意味のある単語が出来上がります.

ただし, スクリプトには以下の処理を必ず組み込むようにして下さい.

  • テキストファイルを実行時引数で指定する.
  • 指定されたテキストファイル以外のファイルを実行時引数で指定した場合はエラー処理を行う.
事前準備
  • 3 つのテキストファイルは itpass サーバー上にありますので, 以下のコマンドを実行して, 自分のホームディレクトリに持ってきて下さい.
cp /home/itpass/dc-arch/exp/fy2015/150807/practice_kadai/kadai1-1_data.txt /home/hoge/
cp /home/itpass/dc-arch/exp/fy2015/150807/practice_kadai/kadai1-2_data.txt /home/hoge/
cp /home/itpass/dc-arch/exp/fy2015/150807/practice_kadai/kadai1-3_data.txt /home/hoge/
  • さらに自分が使用している情報実験機にデータをコピーしてください.
cd ~hoge
scp kadai1-1_data.txt hoge@133.30.109.??:
scp kadai1-2_data.txt hoge@133.30.109.??:
scp kadai1-3_data.txt hoge@133.30.109.??:

?? には, 自分が使用している情報実験機のIPアドレスを入力してください.

レポートに書く内容

レポート内には以下を記述してください. ただしリンクを貼る際は相対パスで指定するようにしてください.

  • シェルスクリプトファイル quiz1.sh.txt へのリンク

    上記で作成した quiz1.sh を quiz1.sh.txt という名前に変更してください. ブラウザ上から読めるようにするためです.

  • シェルスクリプトの解説

    スクリプト内の各行が何をしているのか, スクリプト内にコメント文として書く.

  • スクリプトの使い方の解説

    これをもとに TA が実際にテストします.  実行する際のスクリプト, データの置き場を明示すること.

  • 実行例 result_1.txt へのリンク

    実行例とは, スクリプトの作業記録です. 自分が実際にスクリプトを実行したときのコンソールをテキストファイルにコピーするなどしてください.

  • 参考資料

    URL をベタ書きにするのではなく, そのページの作者やタイトル, および何を参考にしたのかも明記する.

  • 共同作業した人の名前
  • 工夫したこと, 感想など

実行結果の例

$ ./quiz1.sh kadai1-0_data.txt
Hynylcqc ncmnjc
Izozmdrd odnokd
Japanese people
Kbqboftf qfpqmf
Lcrcpgug rgqrng
Mdsdqhvh shrsoh
Neteriwi tistpi
Ofufsjxj ujtuqj
Pgvgtkyk vkuvrk
Qhwhulzl wlvwsl
Rixivmam xmwxtm
Sjyjwnbn ynxyun
Tkzkxoco zoyzvo
Ulalypdp apzawp
Vmbmzqeq bqabxq
Wncnarfr crbcyr
Xodobsgs dscdzs
Ypepctht etdeat
Zqfqduiu fuefbu
Argrevjv gvfgcv
Bshsfwkw hwghdw
Ctitgxlx ixhiex
Dujuhymy jyijfy
Evkviznz kzjkgz
Fwlwjaoa laklha
Gxmxkbpb mblmib

問題 2

気象データを解析するスクリプト

2005年1月1日から2014年12月31日までの, 神戸市で観測された気象データファイルがあります. このデータファイルは, 以下のようなディレクトリ構造になっています.

/home/hoge/kadai2_data
    |
    | -- 2005-01.csv   ( 2005 年 1 月のデータ)
    | -- 2005-02.csv   ( 2005 年 2 月のデータ)
    | -- 2005-03.csv   ( 2005 年 3 月のデータ)
    | -- ......

この csv ファイルの各列には, 次のような順番でデータが記述されています.

<日付>, <現地平均気圧>, <海面平均気圧>, <合計降水量>, .......

詳しい対応はここを参照して下さい.

このファイルから必要なデータを適宜読み込んで, 各年の

  • 猛暑日の日数
  • 真夏日の日数
  • 夏日の日数

をそれぞれ出力するスクリプトを作成してください.

ただし, スクリプトには以下の処理を必ず組み込むようにして下さい.

  • データの中に")"と"]"が含まれており, エラーの原因となるので, それを取り除く処理を行う.
  • 実行結果の例のように, 選択肢を表示し, 項目を選べるようにする.
  • 存在しない項目が指定された場合には, エラー処理を行う.
  • 項目別の日数の情報は, 以下のようにコンソールに出力する.

 例:真夏日の日数

<20**年> <**日> 
<20**年> <**日> 
<20**年> <**日> 
(以下略)
 事前準備

スクリプトを作成する前に, ITPASSサーバ上のデータファイルを自分のホームディレクトリに持ってきてください.

次のコマンドをITPASSサーバで実行します.

cp /home/itpass/dc-arch/exp/fy2015/150807/practice_kadai/kadai2_data.tar.gz /home/hoge/

自分が使用している情報実験機にデータをコピーしてください.

cd ~hoge                                                       
scp  ./kadai2_data.tar.gz hoge@133.30.109.??:~         

?? には, 自分が使用している情報実験機のIPアドレスを入力してください.

次のコマンドを情報実験機で実行します.

気象データは圧縮ファイルにまとめられています. tar コマンドを用いて圧縮ファイルを展開してください.

cd ~hoge
tar xvzf ./kadai2_data.tar.gz
レポートに書く内容

レポート内には以下を記述してください. ただしリンクを貼る際は相対パスで指定するようにしてください.

  • シェルスクリプトファイル quiz2.sh.txt へのリンク 上記で作成した quiz2.sh を quiz2.sh.txt という名前に変更してください. ブラウザ上から読めるようにするためです.
  • シェルスクリプトの解説

    スクリプト内の各行が何をしているのか, スクリプト内にコメント文として書く.

  • スクリプトの使い方の解説

    これをもとに TA が実際にテストします.  実行する際のスクリプト, データの置き場を明示すること.

  • 実行結果 result_2.txt ページへのリンク

    3つの項目の内1つを適当に指定してスクリプトを実行し, その結果をresult_2.txt にリダイレクトしてください. また, 指定された項目以外を指定した場合の出力結果も result_2.txt の最後に加えてください.

  • 参考資料

    URL をベタ書きにするのではなく, そのページの作者やタイトル, および何を参考にしたのかも明記する.

  • 共同作業した人の名前
  • 工夫したこと, 感想など

実行結果の例

$ ./quiz2.sh
 表示したい値の番号を入力してください
1.猛暑日の日数 2.真夏日の日数 3.夏日の日数
1
 2005年 ??日
 2006年 ??日
 2007年 ??日
 2008年 ??日
 2009年 ??日
 2010年 ??日
 2011年 ??日
 2012年 ??日
 2013年 ??日
 2014年 ??日

なお, 今回使用するデータは, 気象庁のHP"過去の気象データ"をもとに作成しました.