CTC 教育サービス
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes
みなさん、こんにちは。
今回は、より現場に近い「実用的な基礎スキル」に焦点を当てた模擬問題を3問取り上げます。ネットワーク自動化と聞くと、NAPALMやNetmikoといったライブラリを用いた機器制御や構成変更といった高度な操作に意識が向きがちですが、実際の現場では、それらを支える基本的なスクリプト処理能力こそが、自動化を成功させる鍵となります。
今回扱うテーマは、以下の3つです。
こうした処理は一見すると「プログラミングの基礎」ですが、ネットワークエンジニアにとっては、自動化を行ううえで重要な部分です。CLIをPythonに置き換えただけのスクリプトでは限界があり、設定やログ、APIレスポンスといった外部とのデータ連携を自在に扱えることが、安定的かつ効率的な自動化を可能にします。
以下の config.yaml にはネットワーク機器の設定が記述されています。このYAMLファイルからホスト名を取得するコードとして正しいものはどれか。
device:
hostname: router01
ip: 192.168.1.1
username: admin
password: pass123
選択肢:
A.
import yaml
with open(’config.yaml’) as f:
config = yaml.load(f)
print(config[’hostname’])
B.
import yaml
with open(’config.yaml’) as f:
config = yaml.safe_load(f)
print(config[’device’][’hostname’])
C.
import json
with open(’config.yaml’) as f:
config = json.load(f)
print(config[’device’][’hostname’])
D.
import yaml
config = yaml.load_file(’config.yaml’)
print(config.device.hostname)
正解:
B
解説:
YAMLはPythonで設定情報を管理する際に頻繁に使われるフォーマットです。この問題のポイントは以下の3点です。
Aは非推奨な yaml.load() を使い、さらに階層構造へのアクセスが不適切。
CはYAMLをJSONで読み込もうとしているためエラーになります。
Dは存在しない yaml.load_file() を使っており無効です。
syslog.txt に記録されたログから、「ERROR」という文字列を含む行だけを errors.txt に保存したい。適切なコードはどれか。
選択肢:
A.
with open(’syslog.txt’, ’r’) as infile, open(’errors.txt’, ’w’) as outfile:
for line in infile:
if line.find(’ERROR’):
outfile.write(line)
B.
with open(’syslog.txt’, ’r’) as infile, open(’errors.txt’, ’w’) as outfile:
for line in infile:
if ’ERROR’ in line:
outfile.write(line)
C.
with open(’syslog.txt’) as infile:
lines = infile.readlines()
if ’ERROR’ in lines:
with open(’errors.txt’, ’w’) as outfile:
outfile.write(lines)
D.
infile = open(’syslog.txt’)
outfile = open(’errors.txt’, ’w’)
for line in infile:
if ’ERROR’ in line:
print(line, file=’errors.txt’)
infile.close()
outfile.close()
正解:
B
解説:
ファイル操作は自動化において不可欠な技術です。特にログからの抽出処理は、アラート通知や監視の前段階として重要です。
Aは line.find(’ERROR’) が "ERROR" を含まないとき -1 を返すため、意図に反して全ての行を出力してしまう。
Cはリストに対して ’ERROR’ in lines を評価しているため不適切です。
Dは print(..., file=’errors.txt’) の書き方が間違いです。file=outfile が正しい構文です。
なお、Pythonでは、with open(...) を使うことで自動的にファイルをクローズできるので、安全で推奨されます。
APIやログファイルから以下のようなJSONデータを受け取ったとします。このデータからCPU使用率(12.3)を取り出すコードとして正しいものはどれか。
{
"device": {
"hostname": "sw-core01",
"status": "up",
"metrics": {
"cpu": 12.3,
"memory": 47.8
}
}
}
選択肢:
A.
import json
with open(’device.json’) as f:
data = json.load(f)
print(data[’metrics’][’cpu’])
B.
import json
with open(’device.json’) as f:
data = json.load(f)
print(data[’device’][’metrics’][’cpu’])
C.
import json
with open(’device.json’) as f:
cpu = json.load(f)[’cpu’]
print(cpu)
D.
import yaml
with open(’device.json’) as f:
data = yaml.safe_load(f)
print(data.device.metrics.cpu)
正解:
B
解説:
構造化されたログやAPIレスポンスを扱う上で、JSON形式の読み取りと辞書操作は非常に重要です。
Aは "metrics" が "device" の下にあることを見落としており、KeyError になります。
Cは cpu をトップレベルキーと誤認しており誤り。
DはJSONファイルをYAMLで読み込もうとしていますが、通常の運用では推奨されませんし、ピリオド(.)で連結するアクセスもPythonでは不可です。
Pythonの json.load() は、JSONデータを辞書として読み込むため、構造を正しく把握してキーをたどる必要があります。
今回取り上げた3問は、ネットワーク自動化の基礎を支える「土台」となるスキルをテーマにしました。
これらは一見すると地味な基礎に見えますが、NAPALMやNetmikoといったライブラリを現場で使うための重要なスキルです。ぜひ、今回の問題をきっかけに、手を動かしながら理解を深めてみてください。次回は、複数機器への並列処理といった、より実践的で応用的なテーマに踏み込んでいきます。どうぞお楽しみに。
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes