Python で CML 上のラボを定期的に自動停止する
以前に以下のメモを書きました。
現状の CML には定期的にラボを自動停止する機能は無く、気がつくと「起動したままのラボ」が乱立している場合があります。 今回は Python + cron で定期的に CML 上のラボを自動停止する方法をメモします。
検証環境¶
対象 | バージョン |
---|---|
Cisco CML | 2.8.0+build.6 |
Ubuntu | 24.04.1 LTS |
今回、検証に利用した CML 2.8.0 のベース OS は Ubuntu 24.04.1 LTS でした。
# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.1 LTS
Release: 24.04
Codename: noble
Python 仮想環境を作成する¶
まず CML へ SSH 接続します。 TCP/22 はコンソールサーバが Listen している為、TCP/1022 へ SSH 接続します。 SSH 接続出来たら root ユーザへ昇格します。 CML の root ユーザはログインシェルが nologin に設定されている為、sudo su -
してもシェルが起動しません。 その為、sudo /usr/bin/bash
を起動して明示的にシェルを起動します。
sudo /usr/bin/bash
Python 仮想環境を作成する為に venv をインストールしておきます。
apt update
apt install -y python3-venv
Python 仮想環境を作成し、スクリプトを配置するディレクトリを作成します。
mkdir -p /opt/cml-stopper/
cd /opt/cml-stopper/
Python 仮想環境を作成します。 配置予定のスクリプトは virl2_client に依存している為、これをインストールしておきます。
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install virl2_client
Python スクリプトとして扱うファイルを新規作成します。
touch cml-stopper.py
chmod 755 cml-stopper.py
内容は以下の通りです。
cml-stopper.py | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 |
|
cron でスケジュール設定を行う¶
作成した Python スクリプトをスケジューリングして自動実行させる為に cron の設定を行います。 cron 設定用のファイルを作成します。
touch /etc/cron.d/cml-stopper
内容は以下の通りです。 今回は「毎週、月曜日の朝 4:00 に起動」するように設定しました。
/etc/cron.d/cml-stopper
0 4 * * 1 root /opt/cml-stopper/.venv/bin/python3 /opt/cml-stopper/cml-stopper.py
これで設定完了です。