20130413シェル芸勉強会スライド
DESCRIPTION
2013年4月13日に開催したシェル芸勉強会のスライド完全版。TRANSCRIPT
![Page 1: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/1.jpg)
第4回春爛漫シェル芸人撩乱 勉強会
USP友の会 上田 隆一
![Page 2: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/2.jpg)
近況
• 月曜、とあるサイトをリリース – (日曜の朝から作業。泊まり込み) – 延期!でも明日も仕事だ!
• 今朝は子供が while sleep 1000 ; do 嘔吐 ; done で病院へ連れて行った。
• お察しください。
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 2
![Page 3: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/3.jpg)
はじめに
なに!?
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 3
![Page 4: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/4.jpg)
東京にミサイルが来るらしい
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 4
![Page 5: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/5.jpg)
今、我々にできること
curlとシェル芸で無慈悲なパケット攻撃
(注意:ダメ絶対)
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 5
![Page 6: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/6.jpg)
ということで本日は
シェル芸web編
やりませう。
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 6
![Page 7: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/7.jpg)
シェル芸とは?
• マウスも使わず、ソースコードも残さず、 GUIツールを立ち上げる間もなく、 あらゆる調査・計算・テキスト処理を コマンド入力一撃で終わらす。
– 近、一般名詞化 してきた
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 7
海外のシェル芸勉強会の様子(再掲)
![Page 8: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/8.jpg)
今回の内容
• ウェブ関連の9問を準備 – ポイント • 表向き:webからの情報収集 • 裏のテーマ:不定形文章の処理(こっちが大事)
• ちょっと難しめ – 玄人が1人混入した2, 3人のグループを
作ってください。
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 8
![Page 9: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/9.jpg)
注意
• 解答例は Mac で作成 • *Linux の人は gawk, gsedを適宜 awk, sedに読み替えのこと • その他環境でも、解答例にこだわらずネット等を
調べながら解答願います。
• 解答では、例題が解ければよい。 – 一般解を探すのは、場合によっては悪い癖となる。
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 9
![Page 10: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/10.jpg)
問題1: 肩ならし
• 次のファイルから、「index.cgi」を 除去して出力してください。 – ただし、p=index.cgiは残すこと。
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 10
![Page 11: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/11.jpg)
解答
• $ cat 2.html | sed 's/index\.cgi//' • $ cat 2.html | awk '{sub(/index\.cgi/,"",$0);print}'
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 11
![Page 12: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/12.jpg)
問題2: urlのリスティング
• 次のファイルを作って、urlを抜き出してください。
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 12
![Page 13: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/13.jpg)
解答
• $ cat 1.html | grep 'href=' | sed 's/^.*href="\(..*\)".*$/\1/' | grep -‐v "^#" | sed 's/"[^"].*//'
• $ cat 1.html | grep "href=" | grep -‐v 'href="#' | sed 's/[^"]*"//' | sed 's/".*$//'
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 13
![Page 14: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/14.jpg)
問題3: 整形
• インデントの汚いhtmlを整形してください – 一行にtd一個にすること
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 14
![Page 15: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/15.jpg)
解答
• $ cat 3.html | gsed 's;</td>;&\n;g' | gsed 's;<td>;\t\t&;' | grep -‐v "^$"
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 15
![Page 16: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/16.jpg)
問題4: webページの切り取り
• yahooさんのトップページからトピックスの 見出しを抽出しましょう
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 16
![Page 17: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/17.jpg)
解答
• まずcurl – $ curl h^p://www.yahoo.co.jp > yahoo.html
• 処理(内容を見ながら) – $ cat yahoo.html | gsed 's;</[^/][^/]*>;&\n;g' | grep top_table | grep '・<a' | sed 's;</a>;;' | sed 's/..*>//'
• 一行で書いてもそんなに長くはない – $ curl h^p://www.yahoo.co.jp | gsed 's;</[^/][^/]*>;&\n;g' | grep top_table | grep '・<a' | sed 's;</a>;;' | sed 's/..*>//'
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 17
![Page 18: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/18.jpg)
問題5: 数値参照の変換
• 次のような数値参照、実体参照文字列を 読めるように変換してください。
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 18
![Page 19: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/19.jpg)
解答
• $ cat numref | nkf -‐-‐numchar-‐input • $ cat numref | w3m -‐T text/html -‐dump 我々はシェル芸人だ。
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 19
![Page 20: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/20.jpg)
問題6: ポスト
• h^p://www.usptomo.com/TOMONOKAI_CMS/CGI/hoge.cgi に、ポストでデータを送りつけてください。
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 20
こんなCGIスクリプト→
![Page 21: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/21.jpg)
解答
• $ wget -‐-‐post-‐data a=aho <URL> • $ curl -‐-‐data-‐urlencode a=aho <URL> • $ curl -‐-‐data a=山本太郎 <url>
あなたのポストしたデータは、
a=山本太郎
です。
• 無慈悲な攻撃 – $ seq 1 10000 | xargs –P 1000 -‐I@ curl -‐-‐data-‐urlencode a=@ h^p://www.usptomo.com/TOMONOKAI_CMS/CGI/hoge.cgi
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 21
![Page 22: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/22.jpg)
問題7: データの収集
• 本日の 高気温をワンライナーで 出力してください。
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 22
![Page 23: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/23.jpg)
解答
• Yahooさんから、東京の 高気温 – $ curl h^p://weather.yahoo.co.jp/weather/jp/13/4410.html 2> /dev/null | grep 高 | tail -‐n 2 | head -‐n 1 | sed 's/.*<br>//' | sed 's/ .*//'
• tenki.jpさんから、東京の 高気温 – $ curl h^p://tenki.jp/forecast/city-‐63.html 2> /dev/null | grep -‐A 1 高 | grep temp | head -‐n 1 | sed 's;.*bold">\(..*\)</span.*;\1;'
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 23
![Page 24: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/24.jpg)
問題8: 画像をダウンロード
• ウェブページに掲載されている画像を集めてください。 – yahooさんのニュースのページ h^p://headlines.yahoo.co.jp/hl 等々から
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 24
![Page 25: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/25.jpg)
解答
• 画像のリンクはすべてフルパスのようです。
– $ curl h^p://headlines.yahoo.co.jp/hl 2> /dev/null | nkf | gsed 's/src="/\n&/g' | grep src= | sed 's/^src="\([^"]*\)".*$/\1/' | while read f ; do wget $f ; done
– $ curl h^p://headlines.yahoo.co.jp/hl 2> /dev/null | nkf | gsed 's/src="/\n&/g' | grep src= | sed 's/^src="\([^"]*\)".*$/\1/' | xargs wget
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 25
![Page 26: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/26.jpg)
問題9: クローリング
• どこかのサイトのトップページにあるリンク先のリストを作って、リストのページや画像等をダウンロードしてください。
– 相対パスにも対応しましょう。
– できたら再帰的にクローリング
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 26
![Page 27: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/27.jpg)
解答
• $ curl h^p://www.yahoo.co.jp | gsed 's/href="/\n&/g' | grep ^href= | sed 's/[^"]*"//' | sed 's/".*$//' | awk '/^h^p/{print $0}!/^h^p/{print "h^p://www.yahoo.co.jp/" $0}' | xargs wget
• wget -‐r h^p://www.yahoo.co.jp
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 27
![Page 28: 20130413シェル芸勉強会スライド](https://reader034.vdocuments.net/reader034/viewer/2022052306/5465e4aeaf795974338b506e/html5/thumbnails/28.jpg)
おわりに
• 次は・・・
#!/beer/bash
2013/04/13 第4回春爛漫シェル芸芸人撩乱勉強会 28