SlideShare a Scribd company logo
ネットワーク
シェル芸
のススメ
第46回シェル芸勉強会
LT
⾃⼰紹介
• Matsu @pineshrine
• https://www.linkedin.com/in/matsu501/
• ネットワークエンジニア歴11年
• 夜型だけど徹夜がしんどくなってきた30代
• シェル⼤好き
• 温泉とストライクウィッチーズが好き
• シェル芸勉強会初参加
(最近東京に転職してきた&Ryotoさんに誘われて)
似顔絵 by マイワイフ
ネットワークエンジニアの仕事⾵景
ルータ、スイッチ、ロードバランサ、ファイアウォール、仮想環境、無線LAN、光多重伝送装置、電話交換機 etc etc...
ネットワークエンジニアで
シェル芸好きな⼈
あまり居ない説
初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
©くまみね⼯房
ヨシ!
ネットワーク
エンジニアの
悩み
• 扱う機器の範囲が広くてめん
どくさい=死
• 作業ミスして回線が切れると
⽂句⾔われる=死
• 何もしなくても壊れて⽂句⾔
われる=死
• ⾃動化が難しい=死
• というかコーディングは本業
じゃない=死
• でもベンダロックインされる
と死
https://www.irasutoya.com/
©いらすとや
ありえん
つらみの深い
存在
それが
ネットワーク
エンジニア
http://sozaing.com/
©ソザイング
グーグル先⽣に助けを求める
• NW機器って基本的に操作はCLIだから
⾃動化し易いはず
• ansibleとかpythonとか⼈気
• でもansibleはUNIX哲学じゃない
• YAML書くの嫌いだし
• pythonで操作するって⾔っても
ガリガリコード書くのしんどい
• ⾞輪の再発明ってUNIX哲学じゃないよね
• ネットワーク機器の操作を⾃動化する既存
の⼿法って無いものかしら?
そんな界隈に颯爽と救世主が
RANCID
https://www.irasutoya.com/
©いらすとや
https://ja.wikipedia.org/wiki/グル
コレジャナイ
rancid ciscoでググると出てくる
• RANCID
- Really Awesome New Cisco config Differ
• 別に颯爽と現れた訳ではない。
界隈で古い⼈だと知ってるかもしれない。
→「あー、聞いたことある。古いやつでしょ?」的なレベル
• コンフィグ差分管理ツール?
• CVSって⽂字が⾒えるけど古代レベルでは?
• なんでCisco名指し?
• 検索でも出てこないしマイナーなのでは?
• サブカルなのでは?副⽂化なのでは?
• というかシェル芸何か関係あるの?
今北産業
• Ciscoと⾔いつつ様々なベンダのコンフィグやハードウェアを管理できる
→マルチベンダ対応
• コンフィグやハードウェア情報を取得するための、
各種装置へのログインスクリプトをサブセットとして持っている
→ログインスクリプト?
• 主に⽶国を中⼼に熱⼼な愛好者が多く、
AOL, Global Crossing, MFN, NTT America, Internet Systems Consortium
などで現在も使⽤されている
→現在も保守されている!
RANCIDへの愛が深すぎて3⾏にならなかった
対応装置⼀覧
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も使える
秘伝のタレ的な
ログインスクリプト群
• 通称「xlogin」スクリプト
• 機器毎に味付けされたexpectのラッパー
• ログインプロンプト対応
• ユーザ名
• パスワード
• 例外処理(警告処理等々)対応
• おまじない対応
• ページング : ciscoだと「terminal length 0」と
か
• CLIにおける⼀般ユーザモードでのデリミタ
処理
• hostname>,hostname$
• CLIにおける特権ユーザモードでのデリミタ
処理
• hostname#
• 装置からのログアウト対応
• logout,exit,quit
expect
• スクリプトを基に、対話処理を必要と
するプログラムとを「お話」をする
プログラム
• UNIX哲学において対話的インタ
フェースはよろしくないが、それを
解消できる
• TCL⽂法を使⽤している
• expectのスクリプト書くのめっちゃ
⾟い
• https://kazmax.zpp.jp/cmd/e/expec
t.1.html
ようやく本題のシェル芸の時間だ
• 今回は操作対象としてオンライン
ラボを借りてみた
• https://labs.networktocode.com
/labs
• Juniper vMX x2
• Cisco CSR1000v x2
• それぞれ5時間で1000円くらい
• 起動中は装置に直接ログインでき
るGlobalIPが貰える
#けど結構遅いし使いづらい
#今回⼀番時間かかったのコレ
やってみる
• xloginの使い⽅
• Cisco : clogin xxx.xxx.xxx.xxx
• Juniper: jlogin xxx.xxx.xxx.xxx
• たたくとユーザに渡される
• あとはお好きに
やってみる(Contd.)
• hostlistを⽤意
LLDPでも⾒てみましょう
juniper
cisco
デモ
今までやってみたこと
• 障害の発⽣した回線の状態(リンク、光レベル、トラフィック)を⼀
覧にするツール作ってみた by bash
• 通称「サーキットツール」
• syslog⾶んできた装置にログインするteratermマクロを動的に⽣成
するツール作ってみた by bash
• 装置のリアルな対向機器の状態をLLDPから定期的に取得し、
HTMLとして吐き出す仕組み作ってみた by bash
• 通称「阿部寛のページ」
• shellintheboxを使ってWebから装置にログインできる仕組み作って
みた by bash
• ウェブログインツール
• でも使い捨てでトラブルシューティングの際にシェル芸するのが⼀
番効果的
ネットワークシェル芸の話をすると
• ネットワークシェル芸するにはUNIX哲学の考え⽅に基づいた
設計思想が必要
• 前職:UNIX哲学をネットワークに適⽤する意義を懇々と語るも
• 「またMatsuのUNIX哲学が始まったよ〜」
• 現職: UNIX哲学をネットワークに適⽤する意義を懇々と語るも
• 「シェル芸でしょ?可読性ないじゃん」
• ⼈望の問題
• みんなにもっとRANCID知って欲しい!使って欲しい!!!11

More Related Content

What's hot

What's hot (18)

Google 20130218
Google 20130218Google 20130218
Google 20130218
 
素晴らしきメガデモの世界
素晴らしきメガデモの世界素晴らしきメガデモの世界
素晴らしきメガデモの世界
 
FPGAことはじめ
FPGAことはじめFPGAことはじめ
FPGAことはじめ
 
201104016 osc2011 kobe
201104016 osc2011 kobe201104016 osc2011 kobe
201104016 osc2011 kobe
 
禁断のESP32対決!NefryBT vs obniz
禁断のESP32対決!NefryBT vs obniz禁断のESP32対決!NefryBT vs obniz
禁断のESP32対決!NefryBT vs obniz
 
GR-MANGOでEtherCAT
GR-MANGOでEtherCATGR-MANGOでEtherCAT
GR-MANGOでEtherCAT
 
FPGA
FPGAFPGA
FPGA
 
Lagopus on small arm board
Lagopus on small arm boardLagopus on small arm board
Lagopus on small arm board
 
Riscv+fpga200606
Riscv+fpga200606Riscv+fpga200606
Riscv+fpga200606
 
Gpu vs fpga
Gpu vs fpgaGpu vs fpga
Gpu vs fpga
 
モーターを低速で定速で動かしてみる
モーターを低速で定速で動かしてみるモーターを低速で定速で動かしてみる
モーターを低速で定速で動かしてみる
 
20190808 servertukumogami
20190808 servertukumogami20190808 servertukumogami
20190808 servertukumogami
 
Hdmits fpgax6-v0
Hdmits fpgax6-v0Hdmits fpgax6-v0
Hdmits fpgax6-v0
 
ラズベリー・パイでプログラミングと電子工作を体験してみよう
ラズベリー・パイでプログラミングと電子工作を体験してみようラズベリー・パイでプログラミングと電子工作を体験してみよう
ラズベリー・パイでプログラミングと電子工作を体験してみよう
 
mobileBB shield for Mozzi
mobileBB shield for MozzimobileBB shield for Mozzi
mobileBB shield for Mozzi
 
Takep lpc1114-190614
Takep lpc1114-190614Takep lpc1114-190614
Takep lpc1114-190614
 
フリスクでBleアプリ
フリスクでBleアプリフリスクでBleアプリ
フリスクでBleアプリ
 
Sw技術者に送るfpga入門
Sw技術者に送るfpga入門Sw技術者に送るfpga入門
Sw技術者に送るfpga入門
 

Similar to Networking technique with shell scripting

hbstudy25 劇的ビフォーアフター
hbstudy25 劇的ビフォーアフターhbstudy25 劇的ビフォーアフター
hbstudy25 劇的ビフォーアフター
semind
 
Internet Week 2018 知っておくべきIPv6とセキュリティの話
Internet Week 2018 知っておくべきIPv6とセキュリティの話Internet Week 2018 知っておくべきIPv6とセキュリティの話
Internet Week 2018 知っておくべきIPv6とセキュリティの話
Akira Nakagawa
 
自動でできるかな?
自動でできるかな?自動でできるかな?
自動でできるかな?
_norin_
 
第1回 静岡 IT Pro 勉強会 セッション1
第1回 静岡 IT Pro 勉強会 セッション1第1回 静岡 IT Pro 勉強会 セッション1
第1回 静岡 IT Pro 勉強会 セッション1
Tatsuya Ueda
 

Similar to Networking technique with shell scripting (20)

hbstudy25 劇的ビフォーアフター
hbstudy25 劇的ビフォーアフターhbstudy25 劇的ビフォーアフター
hbstudy25 劇的ビフォーアフター
 
Report of OpenStack Ops Meetup Palo Alto (in Japanese)
Report of OpenStack Ops Meetup Palo Alto (in Japanese)Report of OpenStack Ops Meetup Palo Alto (in Japanese)
Report of OpenStack Ops Meetup Palo Alto (in Japanese)
 
AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験
AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験
AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験
 
Internet Week 2018 知っておくべきIPv6とセキュリティの話
Internet Week 2018 知っておくべきIPv6とセキュリティの話Internet Week 2018 知っておくべきIPv6とセキュリティの話
Internet Week 2018 知っておくべきIPv6とセキュリティの話
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
 
Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)Lagopus Project (Open Source Conference)
Lagopus Project (Open Source Conference)
 
Openstack neutron vtjseminar_20160302
Openstack neutron vtjseminar_20160302Openstack neutron vtjseminar_20160302
Openstack neutron vtjseminar_20160302
 
Lagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそばLagopus workshop@Internet weekのそば
Lagopus workshop@Internet weekのそば
 
自動でできるかな?
自動でできるかな?自動でできるかな?
自動でできるかな?
 
ネットワークスイッチ構築実践 1.VLAN・LinkAggregation編
ネットワークスイッチ構築実践 1.VLAN・LinkAggregation編ネットワークスイッチ構築実践 1.VLAN・LinkAggregation編
ネットワークスイッチ構築実践 1.VLAN・LinkAggregation編
 
katagaitaictf7_hw_ysk
katagaitaictf7_hw_yskkatagaitaictf7_hw_ysk
katagaitaictf7_hw_ysk
 
545人のインフラを支えたNOCチーム!
545人のインフラを支えたNOCチーム!545人のインフラを支えたNOCチーム!
545人のインフラを支えたNOCチーム!
 
秋の夜長のトランスポート
秋の夜長のトランスポート秋の夜長のトランスポート
秋の夜長のトランスポート
 
平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測
平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測
平成26年度熊本高専Arduino講座 第2週 XBeeを用いた遠隔放射線量計測
 
フロー技術によるネットワーク管理
フロー技術によるネットワーク管理フロー技術によるネットワーク管理
フロー技術によるネットワーク管理
 
クラウド時代のネットワーク再入門
クラウド時代のネットワーク再入門クラウド時代のネットワーク再入門
クラウド時代のネットワーク再入門
 
透過 L2 BRIDGE NAT
透過 L2 BRIDGE NAT透過 L2 BRIDGE NAT
透過 L2 BRIDGE NAT
 
第2回【CCNA】ネットワーク基礎講座_なにわTECH道180126
 第2回【CCNA】ネットワーク基礎講座_なにわTECH道180126 第2回【CCNA】ネットワーク基礎講座_なにわTECH道180126
第2回【CCNA】ネットワーク基礎講座_なにわTECH道180126
 
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
 
第1回 静岡 IT Pro 勉強会 セッション1
第1回 静岡 IT Pro 勉強会 セッション1第1回 静岡 IT Pro 勉強会 セッション1
第1回 静岡 IT Pro 勉強会 セッション1
 

Recently uploaded

2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
ssuserbefd24
 

Recently uploaded (11)

論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
論文紹介:Deep Occlusion-Aware Instance Segmentation With Overlapping BiLayers
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 

Networking technique with shell scripting