はじめに
本ドキュメントは、Nexus 機器の bootflash もしくは volatile 配下に Python スクリプトを配置して、それを Scheduler 機能で定期的に実施するサンプルコードを紹介します。
なお、本ドキュメントは、N9K-C93240YC-FX2 / NXOS-9.3(7) で検証しています。
Scheduler 機能
Scheduler とは、Unix における cron と似たものであり、特定のコマンドを定期的に発行するといったことが可能です。
詳細に関しては、弊社ドキュメントもしくは、以下の community ページをご参考ください。
Cisco Nexus シリーズ : Scheduler 機能
Python スクリプト
NXOS では、非インタラクティブモードで、自作した Python スクリプトを動かすことができ、Python スクリプトは、複数の方法(手動・EEM・Scheduler 機能)で実行することができます。詳細に関しては、弊社ドキュメントもしくは、以下の community ページをご参考ください。
NX-OS Programmability : Python スクリプトについて
Scheduler 機能と Python スクリプトの組み合わせ
Scheduler と Python スクリプトを組み合わせることで、定期的に Python スクリプトを実行することができます。
# python3 : switchname.py
#!/bin/env python3
from cli import *
from nxos import *
import os
switchname = cli("show switchname")
try:
user = os.environ['USER']
except:
user = "No user"
pass
msg = user + " ran " + __file__ + " on : " + switchname
print(msg)
py_syslog(1, msg)
上記の switchname.py を bootflash:///scripts 配下に保存します。その後、scheduler を設定します。
N9K-C93240YC-FX2(config)# feature scheduler
N9K-C93240YC-FX2(config)# scheduler job name job_switchname
N9K-C93240YC-FX2(config-job)# python bootflash:///scripts/switchname.py
N9K-C93240YC-FX2(config-job)# exit
N9K-C93240YC-FX2(config)# scheduler schedule name job_switchname
N9K-C93240YC-FX2(config-schedule)# job name job_switchname
N9K-C93240YC-FX2(config-schedule)# time start now repeat 0:0:4 <<< 4 分毎に実施するように設定
Schedule starts from Wed Jul 21 14:32:34 2021
N9K-C93240YC-FX2(config-schedule)#
4分毎に以下のログが確認できます。
show logging log | last
2021 Jul 21 14:32:37 N9K-C93240YC-FX2 %USER-1-SYSTEM_MSG: No user ran /bootflash/scripts/switchname.py on : N9K-C93240YC-F
X2 - nxpython
2021 Jul 21 14:36:36 N9K-C93240YC-FX2 %USER-1-SYSTEM_MSG: No user ran /bootflash/scripts/switchname.py on : N9K-C93240YC-F
X2 - nxpython (message repeated 1 time)
2021 Jul 21 14:40:37 N9K-C93240YC-FX2 %USER-1-SYSTEM_MSG: No user ran /bootflash/scripts/switchname.py on : N9K-C93240YC-F
X2 - nxpython (message repeated 1 time)
2021 Jul 21 14:44:37 N9K-C93240YC-FX2 %USER-1-SYSTEM_MSG: No user ran /bootflash/scripts/switchname.py on : N9K-C93240YC-F
X2 - nxpython (message repeated 1 time)
この Scheduler と Python スクリプトを組み合わせることで N9K-C93240YC-FX2 という switchname が表示されていることが確認できます。あくまでこれらは、サンプルコードとなりますが、Scheduler と Python スクリプトを組み合わせで定期的に実施ことができることが分かります。
参考情報
Cisco Nexus 9000 Series NX-OS Programmability Guide, Release 9.3(x)
Cisco Nexus スイッチ (NX-OS) : 設定例