Python で CML 上のノードの X / Y 座標を変更するサンプル
Cisco CML でラボを作成する際、微妙にノードの位置が揃わない場合があります… GUI 上から揃える方法が分からなかった為、「ノードの X / Y 座標を指定出来る Python スクリプト」を書いたのでメモしておきます。 検証は Ubuntu 22.04LTS 上の Python 3.10.4 で行いました。
Cisco CML でラボを作成する際、微妙にノードの位置が揃わない場合があります… GUI 上から揃える方法が分からなかった為、「ノードの X / Y 座標を指定出来る Python スクリプト」を書いたのでメモしておきます。 検証は Ubuntu 22.04LTS 上の Python 3.10.4 で行いました。
Python で webexteamssdk を使い、Webex Teams のスペース (≒ チャット) に参加しているメンバー一覧を取得するスクリプト例をメモしておきます。 Ubuntu 22.04LTS + Python 3.10.4 環境で動作確認しました。 メンバー取得出来るのは後の手順で作成する bot が所属しているスペースが対象です。
pyOpenSSL は OpenSSL の Python 用ラッパーです。 pyOpenSSL を使うことで python のコード内から OpenSSL を利用することが可能です。 今回は pyOpenSSL を利用して「Python から証明書の有効期限を取得する」サンプルをメモしておきます。
Python で pip でインストール出来る CLI ツールを作成する手順をメモしておきます。
以前に Python + responder + gunicorn + systemd + Nginx で Web アプリを起動する というメモを書きました。 Apache2 + responder に置き換えた内容で改めてメモしておきます。 Python アプリケーションは venv 環境の中に作成します。
responder でアプリケーションを書いても AttributeError: module 'typesystem' has no attribute 'SchemaDefinitions'
というエラーになる場合があります。 例えば以下のように pip で gunicorn や responder をインストールせずにインストールし、アプリケーションを実行した場合にエラーになるかも知れません。
Python で venv 環境を作成した際、該当ディレクトリに移動する毎に source venv/bin/activate
する必要があります。 direnv を使うことでこれを自動化することが出来ます。 direnv は現時点で Release v2.31.0 が最新ですがバイナリが登録されていない為、今回は Release v2.30.3 を利用します。 尚、今回は Ubuntu 20.04LTS 上でテストしました。
batfish に同梱されているサンプルスクリプトや、インターネット上で見かけるスクリプト例は「スナップショットの有無に関わらず、スナップショットを生成する」ものが多いと思います ("例" なので、そういうものなのだと思います)。 仮に何度もスクリプトを実行し直す場合は、「コンフィグに変化が無いのであれば、毎回のスナップショット再作成は不要」という場合もあると思います。 そういった場合の実装例をメモしておきます。
例として Question には ipOwners を利用していますが、どの Question を利用してもスナップショット初期化部分の考え方は同じです。
Python でディレクトリを再帰検索し、ハッシュ値を取得するサンプルコードをメモしておきます。 ハッシュ値の計算には hashlib を使い、アルゴリズムには SHA1 を利用しています。
Python3 で標準ライブラリの argparse を使うことで「サブコマンドを理解出来るコマンド」を実装することが出来ます。 今回はサンプルスクリプトと実行例をメモしておきます。