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.

Networking technique with shell scripting

656 views

Published on

ネットワークシェル芸

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Networking technique with shell scripting

  1. 1. ネットワーク シェル芸 のススメ 第46回シェル芸勉強会 LT
  2. 2. ⾃⼰紹介 • Matsu @pineshrine • https://www.linkedin.com/in/matsu501/ • ネットワークエンジニア歴11年 • 夜型だけど徹夜がしんどくなってきた30代 • シェル⼤好き • 温泉とストライクウィッチーズが好き • シェル芸勉強会初参加 (最近東京に転職してきた&Ryotoさんに誘われて) 似顔絵 by マイワイフ
  3. 3. ネットワークエンジニアの仕事⾵景 ルータ、スイッチ、ロードバランサ、ファイアウォール、仮想環境、無線LAN、光多重伝送装置、電話交換機 etc etc...
  4. 4. ネットワークエンジニアで シェル芸好きな⼈ あまり居ない説 初LT…ども… 俺みたいなネットワークエンジニアでシェル芸する腐れ野郎、 他に、いますかっていねーか、はは 今⽇の職場の会話 あのAnsibleかっこいい とか Pythonを標準⾔語に とか ま、それが普通ですわな かたや俺はパイプを繋げてルータを操作して、呟くんすわ Always on the shell.狂ってる?それ、誉め⾔葉ね。 好きなOSS RANCID 尊敬する⼈間 Mike Gancarz(X Window systemはNO) ⽇が変わって帰宅してLT資料を勉強会の当⽇に作って朝の4 時っすよ(笑) あ〜あ、社畜の⾟いとこね、これ https://kumamine.blogspot.com/2019/12/blog-post_27.html ©くまみね⼯房 ヨシ!
  5. 5. ネットワーク エンジニアの 悩み • 扱う機器の範囲が広くてめん どくさい=死 • 作業ミスして回線が切れると ⽂句⾔われる=死 • 何もしなくても壊れて⽂句⾔ われる=死 • ⾃動化が難しい=死 • というかコーディングは本業 じゃない=死 • でもベンダロックインされる と死 https://www.irasutoya.com/ ©いらすとや
  6. 6. ありえん つらみの深い 存在 それが ネットワーク エンジニア http://sozaing.com/ ©ソザイング
  7. 7. グーグル先⽣に助けを求める • NW機器って基本的に操作はCLIだから ⾃動化し易いはず • ansibleとかpythonとか⼈気 • でもansibleはUNIX哲学じゃない • YAML書くの嫌いだし • pythonで操作するって⾔っても ガリガリコード書くのしんどい • ⾞輪の再発明ってUNIX哲学じゃないよね • ネットワーク機器の操作を⾃動化する既存 の⼿法って無いものかしら?
  8. 8. そんな界隈に颯爽と救世主が RANCID https://www.irasutoya.com/ ©いらすとや https://ja.wikipedia.org/wiki/グル
  9. 9. コレジャナイ
  10. 10. rancid ciscoでググると出てくる • RANCID - Really Awesome New Cisco config Differ • 別に颯爽と現れた訳ではない。 界隈で古い⼈だと知ってるかもしれない。 →「あー、聞いたことある。古いやつでしょ?」的なレベル • コンフィグ差分管理ツール? • CVSって⽂字が⾒えるけど古代レベルでは? • なんでCisco名指し? • 検索でも出てこないしマイナーなのでは? • サブカルなのでは?副⽂化なのでは? • というかシェル芸何か関係あるの?
  11. 11. 今北産業 • Ciscoと⾔いつつ様々なベンダのコンフィグやハードウェアを管理できる →マルチベンダ対応 • コンフィグやハードウェア情報を取得するための、 各種装置へのログインスクリプトをサブセットとして持っている →ログインスクリプト? • 主に⽶国を中⼼に熱⼼な愛好者が多く、 AOL, Global Crossing, MFN, NTT America, Internet Systems Consortium などで現在も使⽤されている →現在も保守されている! RANCIDへの愛が深すぎて3⾏にならなかった
  12. 12. 対応装置⼀覧 agm A Cisco Anomoly Guard Module (aka Riverhead). Suspect that at some point the UI will become more cisco-like and it can be merged with the IOS rancid module. alteon An Alteon WebOS switches. arista An Arista Networks device. avocent An Avocent Cyclades console server. baynet A Bay Networks router. bigip A F5 device running BIG-IP >= v11. cat5 A Cisco catalyst series 5000 and 4000 switches (i.e.: running the catalyst OS, not IOS). ciena-ws A Ciena Waveserver. cisco A Cisco router, PIX, or switch such as the 3500XL or 6000 running IOS (or IOS-like) OS, but not IOS-XR, NX-OS or Cisco small business devices. cisco-sb A Cisco small business devices. cisco-nx A Cisco Nexus switch/router. cisco-xr A Cisco device running IOS-XR. cisco-wlc4 A Cisco Wireless Controller versions up to 4. cisco-wlc5 A Cisco Wireless Controller versions 5 and above. css A Cisco content services switch. enterasys An enterasys NAS. This is currently an alias for the riverstone device type. erx A Juniper E-series edge router. dell A Dell switch. Known working models are DES-3010F, DES- 3052P, DES-3526, and DES-3550. Note that Dell OEMs some equipment and has purchased some companies, so a Dell product may not work with the dell rancid module but may work with smc or force10. extreme An Extreme switch. ezt3 An ADC-Kentrox EZ-T3 mux. f5 A F5 BigIP switch. force10 A Force10 router. fortigate A Fortinet firewall. foundry A Foundry router, switch, or router-switch. This includes HP Procurve switches that are OEMs of Foundry products, such as the HP9304M. hitachi A Hitachi router. hp A HP Procurve switch such as the 2524, 4108 or J9086A (aka. 2610) procurve switches, J9091A, and J8698A. Also see the foundry type. juniper A Juniper router. mikrotik A Mikrotik router. mrtd A host running the (Merit) MRTd daemon. mrv A MRV optical device; including NC316, OptiSwitch 904, OptiSwitch 906G, OptiSwitch 912C, OptiSwitch 940. netscalar A Netscalar load balancer. netscreen A Netscreen firewall. onefinity A Fujitsu 1finity device. paloalto A Palo Alto Networks device. procket A Procket router. redback A Redback router, NAS, etc. riverstone A Riverstone NAS or Cabletron (starting with version ~9.0.3) router. smc A SMC switch, which also account for some Dell OEMs. Including Dell PowerConnect 35xx (3524, 3524P, 3548, 3548P) and 7048. sros A Nokia (Alcatel-Lucent) router, such as the 7750 SR. xirrus A Xirrus array. zebra Zebra routing software. 古い装置から新しい装置、 アプライアンスのレイヤもL1からL7までなんでもあるぞ ここに載っていないHuaweiとかAruba、Brocadeも使える
  13. 13. 秘伝のタレ的な ログインスクリプト群 • 通称「xlogin」スクリプト • 機器毎に味付けされたexpectのラッパー • ログインプロンプト対応 • ユーザ名 • パスワード • 例外処理(警告処理等々)対応 • おまじない対応 • ページング : ciscoだと「terminal length 0」と か • CLIにおける⼀般ユーザモードでのデリミタ 処理 • hostname>,hostname$ • CLIにおける特権ユーザモードでのデリミタ 処理 • hostname# • 装置からのログアウト対応 • logout,exit,quit
  14. 14. expect • スクリプトを基に、対話処理を必要と するプログラムとを「お話」をする プログラム • UNIX哲学において対話的インタ フェースはよろしくないが、それを 解消できる • TCL⽂法を使⽤している • expectのスクリプト書くのめっちゃ ⾟い • https://kazmax.zpp.jp/cmd/e/expec t.1.html
  15. 15. ようやく本題のシェル芸の時間だ • 今回は操作対象としてオンライン ラボを借りてみた • https://labs.networktocode.com /labs • Juniper vMX x2 • Cisco CSR1000v x2 • それぞれ5時間で1000円くらい • 起動中は装置に直接ログインでき るGlobalIPが貰える #けど結構遅いし使いづらい #今回⼀番時間かかったのコレ
  16. 16. やってみる • xloginの使い⽅ • Cisco : clogin xxx.xxx.xxx.xxx • Juniper: jlogin xxx.xxx.xxx.xxx • たたくとユーザに渡される • あとはお好きに
  17. 17. やってみる(Contd.) • hostlistを⽤意
  18. 18. LLDPでも⾒てみましょう
  19. 19. juniper
  20. 20. cisco
  21. 21. デモ
  22. 22. 今までやってみたこと • 障害の発⽣した回線の状態(リンク、光レベル、トラフィック)を⼀ 覧にするツール作ってみた by bash • 通称「サーキットツール」 • syslog⾶んできた装置にログインするteratermマクロを動的に⽣成 するツール作ってみた by bash • 装置のリアルな対向機器の状態をLLDPから定期的に取得し、 HTMLとして吐き出す仕組み作ってみた by bash • 通称「阿部寛のページ」 • shellintheboxを使ってWebから装置にログインできる仕組み作って みた by bash • ウェブログインツール • でも使い捨てでトラブルシューティングの際にシェル芸するのが⼀ 番効果的
  23. 23. ネットワークシェル芸の話をすると • ネットワークシェル芸するにはUNIX哲学の考え⽅に基づいた 設計思想が必要 • 前職:UNIX哲学をネットワークに適⽤する意義を懇々と語るも • 「またMatsuのUNIX哲学が始まったよ〜」 • 現職: UNIX哲学をネットワークに適⽤する意義を懇々と語るも • 「シェル芸でしょ?可読性ないじゃん」 • ⼈望の問題 • みんなにもっとRANCID知って欲しい!使って欲しい!!!11

×