CiscoConfParse 初期化時の INFO 表示を抑制する
以前に CiscoConfParse でインターフェイス情報を抽出する というメモを書きました。 CiscoConfParse は「Cisco 機器のコンフィグを構造的に扱うことが出来る」便利なライブラリです。 但し、ネット上にある古いサンプルの書き方では実行時に INFO
が表示されることがあります。 今回はそれを抑制する方法をメモしておきます。
以前に CiscoConfParse でインターフェイス情報を抽出する というメモを書きました。 CiscoConfParse は「Cisco 機器のコンフィグを構造的に扱うことが出来る」便利なライブラリです。 但し、ネット上にある古いサンプルの書き方では実行時に INFO
が表示されることがあります。 今回はそれを抑制する方法をメモしておきます。
Python のデコレータ (decorator) は 公式ドキュメントの用語集 で以下のように定義されています。
Note
(デコレータ) 別の関数を返す関数で、通常、 @wrapper 構文で関数変換として適用されます。デコレータの一般的な利用例は、 classmethod() と staticmethod() です。
デコレータの文法はシンタックスシュガーです。次の2つの関数定義は意味的に同じものです:
def f(arg):
...
f = staticmethod(f)
@staticmethod
def f(arg):
...
同じ概念がクラスにも存在しますが、あまり使われません。デコレータについて詳しくは、 関数定義 および クラス定義 のドキュメントを参照してください。
つまり、デコレータの実態は「関数を受け取り、関数を返す関数」と言えます。 もう少し分かりやすく噛み砕くと「関数の処理内容を変更せず、関数に機能を追加出来る仕組み」とも言えます。
Python 3.7 からクラスで保持させるデータを簡単に定義出来る dataclasses がサポートされました。 今回は「dataclass を使った場合」「使わない場合」の書き方を比較してみます。
Python で urllib3 を利用する場合、以下の条件を満たしていると ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+
エラーが表示されます。
この問題を解決するには以下、いずれかを実行します。
Python で文字列を結合したり、フォーマットを指定するには str.format(args, *kwargs) を使う方法があります。 Python 3.6 からは フォーマット済み文字列リテラル、俗に言う「f 文字列」がサポートされ、より簡単に定義出来るようになりました。
以下は「文字列を結合して表示する」という目的を異なる方法で実装した例です。
1 2 3 4 5 6 7 8 9 10 11 |
|
静的サイトジェネレーターである MkDocs に関して、日本語の情報源としては Mebiusbox さんがお書きになっている MkDocsによるドキュメント作成 が最強なのでは無いかと思います。 余談ですが 「動かして学ぶ!Rust入門」の執筆 によると Mebiusbox さんは さんは 動かして学ぶ!Rust入門 の著者でもあるそうです (すごい)。
以前に HBFM (Markdown 拡張) を追加した MkDocs の Docker イメージ というメモを書きました。 このは ハートビーツ さんが作成されたプラグインを取り込んだ MkDocs の Docker イメージを利用する前提になっています。 今回は Docker コンテナは利用せず、ローカルに MkDocs をインストールする手順をメモしておきます。
XPRESSO はネットワークテストの自動化ツールである pyATS にブラウザからアクセス可能な UI を提供します。 今回は XPRESSO のインストール手順をメモしておきます。 尚、タイムゾーンの指定など、設定に関しては省略しており、インストール手順までだけをメモしています。
Python から Excel を操作するライブラリは幾つか存在しますが、特に openpyxl が有名のように思います。 但し、現状の openpyxls には「複数範囲に対して、一括で外枠を定義する」ようなメソッドが無いようなので、サンプル実装をメモしておきます。 今回は以下を利用しました。
尚、罫線に限らない「書式全般の操作」については openpyxl 公式ドキュメントの Working with styles で言及されています。
CiscoConfParse で Cisco IOS のコンフィグを解析し、IP アドレスなどの情報を抽出するサンプルをメモしておきます。 CiscoConfParse は 1.7.24 を使いました。
Python のパッケージ管理ツールは幾つかあります。 Armin Ronacher さんが開発した rye が使いやすかったのでインストールや基本的な利用手順をメモしておきます。 Armin Ronacher さんは rye の他に flask や jinja、click 等を開発されているそうです。 また、rye が初めて公開されたのは 2023 年 5 月だそうです。 今回は macOS 13.4.1 で検証しました。