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