【要約】PythonとNetmikoでCiscoルータのshowコマンドを取得してログ保存する [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
ネットワークエンジニアが、多数の機器の状態確認を行う際に、手作業による非効率性に直面する。
- ・手動でのSSHログインとコマンド入力に伴う、膨大な作業工数の発生。
- ・実行結果のコピペ作業による、ログ保存漏れや転記ミスのリスク。
- ・複数台の機器間で、設定や状態の差分を確認する作業の煩雑さ。
// Approach
著者は、PythonのNetmikoライブラリを用いて、ネットワーク機器操作をプログラム化する手法を提示する。
- ・ConnectHandlerによる、Cisco IOSデバイスへのSSH接続確立。
- ・send_commandメソッドを用いた、showコマンドの実行と結果取得。
- ・find_promptとstrip_command=Falseによる、手動操作に近い形式でのログ出力。
- ・forループによる、複数ホストおよび複数コマンドのバッチ処理。
// Result
本手法の導入により、エンジニアは定型的な確認作業の工数を大幅に削減できる。
- ・複数台のルータに対し、同一のコマンドを一度の実行で適用可能。
- ・実行結果をホスト名に基づいたファイル名で自動保存し、管理を容易にする。
- ・TextFSM等を用いた、データの構造化(パース)への発展性が示されている。
Senior Engineer Insight
> ネットワーク自動化の第一歩として、Netmikoによるテキスト取得は極めて実用的だ。しかし、本記事のコードは「文字列の取得」に留まっている。実運用では、取得したテキストをいかに解析し、判定ロジックに繋げるかが重要だ。また、認証情報の管理やエラーハンドリング、並列実行の実装が、スケーラビリティ確保には不可欠である。