CTC 教育サービス
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes
みなさん、こんにちは。
この連載では、「Pythonとネットワーク自動化基礎検定」の合格を視野に、ネットワーク自動化をこれから学ぶ方に向けて、Pythonによる基本的なスクリプトとその考え方を模擬問題形式で解説しています。出題範囲に沿って、実際の現場でも役立つ知識を体系的に身につけられる内容を目指しています。
前回は、自動化の中核となるライブラリ「NAPALM」と「Netmiko」を取り上げ、それぞれの特徴と用途の違いをの模擬問題2問を解説しました。
今回は、スクリプトの柔軟性や保守性を高める「周辺技術」に注目します。YAMLでの設定管理や、subprocessを用いた外部コマンド実行など、実践的な自動化を支える技術を模擬問題形式で、解説していきましょう。
以下のようなネットワーク自動化スクリプトがある。devices.yml に記述された各ネットワーク機器に対してSSH接続し、OSのバージョン情報を取得して表示するコードを作成したい。最も適切なYAMLの書き方はどれか。
import yaml
with open("devices.yaml", "r", encoding="utf-8") as f:
data = yaml.safe_load(f)
for device in data["devices"]:
print(f"{device[’name’]} ({device[’ip’]})")
選択肢:
A.
devices:
- name: router1
ip: 192.168.1.1
- name: router2
ip: 192.168.1.2
B.
router1:
name: router1
ip: 192.168.1.1
router2:
name: router2
ip: 192.168.1.2
C.
devices:
- host: 192.168.1.1
username: admin
password: cisco
- host: 192.168.1.2
username: admin
password: cisco
D.
devices: [
{name: router1, ip: 192.168.1.1},
{name: router2, ip: 192.168.1.2}
]
正解:
C
解説:
YAMLは、Pythonの辞書(dict)やリスト(list)に変換しやすい形式で記述できるため、ネットワーク自動化における構成管理ファイルとしてよく利用されます。選択肢Aは、devicesというキーの下にリスト形式で複数の機器を記述しています。この構造は、次のようにPython側で処理しやすいため、実務でも多く使われます。
Cは、devicesキーの下にリスト形式で辞書を並べる、YAMLの基本構文として正しい形式です。Pythonでは data["devices"] にアクセスし、各辞書を device[’name’]、device[’ip’] で取り出せます。 Aは、router2 の ip がインデントされておらず、構造上のエラーとなります。 Bは、devices: という親キーが存在せず、スクリプトの data["devices"] に対応しません。 DはYAMLとして一応解釈可能ですが、Pythonの辞書・リスト構造に似せた省略形式であり、可読性・保守性の面から避けるべき書き方です。
以下のコードは、複数のIPアドレスに対してPingを実行して、到達可能かどうかを判定するPythonスクリプトである。空欄 [ ] に入る適切な関数はどれか。
import subprocess
hosts = [’192.168.1.1’, ’192.168.1.2’]
for ip in hosts:
result = subprocess.run([’ping’, ’-c’, ’1’, ip], stdout=subprocess.PIPE)
if result.returncode == [ ]:
print(f"{ip} は到達可能")
else:
print(f"{ip} は到達不可")
選択肢:
A. 1
B. 0
C. True
D. None
正解:
B. 0
解説:
subprocess.run() は、コマンドを実行した結果の戻り値を returncode というプロパティで提供します。UNIX/Linux環境では、returncode == 0 が正常終了、つまりPingが成功したことを意味します。
したがって、このスクリプトでは returncode == 0 のときに「到達可能」と判定するのが正しい実装です。
if result.returncode == 0:
print(f"{ip} は到達可能")
このようなpingを使った簡易的な死活監視は、状態確認やログ収集の前段として有用です。さらに発展させると、ログファイルへの書き出し、アラート通知、NotionやGoogle Sheetsへの記録などにも展開できます。
今回の2問は、ネットワーク自動化を支える「周辺技術」に注目しました。
こうした周辺技術は、NAPALMやNetmikoといった専用ライブラリと連携させることで、より柔軟で現場に即したネットワーク自動化の土台となります。現場でよくある小さな面倒ごとを自動化できるスクリプトを使うかどうかが、日々の運用の質を左右するかもしれません。
次回も、実務で役立つスクリプト例とともに、ネットワーク自動化に必要な知識と考え方を「模擬問題形式」で解説していきます。読むだけで終わらず、手を動かして身につけることを大切に、ぜひ一緒に学んでいきましょう。
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes