■ はじめに
Netmiko とは、Cisco IOS や Juniper Junos などのネットワーク機器にSSHでログインして操作するのを助けてくれるPythonのライブラリです。 例えば、ログインやコンフィギュレーションモードへの移行、ログアウトなどの操作は関数として抽象化されています。 IPアドレスやOSPFの設定など、細かい設定はコマンドを直接指定するタイプです。
上記リポジトリの説明にはSSH接続と記載されていますが、過去のリリースノート等を確認するとTELNETでも接続できるようです。 今回はCisco IOS機器へのTELNETを試してみます。
[参考] Netmiko 1.0 Release · Issue #245 · ktbyers/netmiko · GitHub
[通常の使い方] Netmiko Quickstart - Network to Code, LLC
【ご注意】 盗聴や改ざん等のセキュリティ上の観点により、 TELNETではなくSSHが推奨されます。 この記事はTELNETを推奨する意図はありません。 ネットワーク自動化系のライブラリやツールは、 CLIはSSH経由のものが多いため「TELNETが可能なものもある」 ということを知識、経験としておさえておくために 検証した結果を記事にしたものです。
■ 準備
Netmiko をインストールします。
pip install netmiko
■ コード
以下の要件のコードを記述します。
- TELNETでログインして、vlan 1 の
description
を設定 - 事前事後で
running-config
を確認
Netmiko の仕様として、通常通りSSHであれば device_type
に "cisco_ios"
と指定するところ、 "cisco_ios_telnet"
と指定するところがポイントです。
from netmiko import ConnectHandler # デバイスのタイプやIPアドレス、認証情報をディクショナリで定義 cisco = { "device_type": "cisco_ios_telnet", "ip": "192.168.1.13", # 接続先のCisco IOS機器 "username": "testuser", # ログインユーザー "password": "testpassword", # ログインパスワード "secret": "enablepassword" # enable パスワード } # TELNET接続して、コネクションオブジェクトを取得 net_connect = ConnectHandler(**cisco) # 特権モードへ移行する net_connect.enable() print("--- [●事前確認] ---") # show コマンドを実行 output = net_connect.send_command("show run int vlan 1") # 結果を出力 print(output) # 実行したい設定コマンドをリストで定義 lines = ["int vlan 1", "description hogehoge"] # 設定コマンドを実行(事前のconf tも自動で実行される) output= net_connect.send_config_set(lines) print("\n--- [●事後確認] ---") # show コマンドを実行 output = net_connect.send_command("show run int vlan 1") # 結果を出力 print(output) # 切断 net_connect.disconnect()
■ 実行結果
以下のように description が正常に追加されました。
--- [●事前確認] --- Building configuration... Current configuration : 77 bytes ! interface Vlan1 ip address 10.0.101.1 255.255.255.0 ip ospf cost 10 end --- [●事後確認] --- Building configuration... Current configuration : 99 bytes ! interface Vlan1 description hogehoge ip address 10.0.101.1 255.255.255.0 ip ospf cost 10 end
■ 本当にTELNETか確認
念のため、本当にTELNET接続しているのか確認します。ここでは wireshark でパケットキャプチャして確認します。
※自身の管理下の環境で確認しています。
さらに 「Follow TCP Stream」で当該TELNETセッションを流れを確認します。
■ さいごに
Netmiko を利用して、TELNET経由で Cisco IOS 機器へ簡単な設定をすることができました。 ただし、冒頭の注意書きの通りTELNETはセキュリティ観点で推奨されません。 もし、既存の自動化システムの調査していてNetmikoが利用されている場合、SSHだと決めつけずにtelnetかもしれないという確認のきっかけにはなるかと思います。