Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20130413シェル芸勉強会スライド

14,349 views

Published on

2013年4月13日に開催したシェル芸勉強会のスライド完全版。

Published in: Technology

20130413シェル芸勉強会スライド

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

×