はじめに
こんにちは たそ(@taso_int)です。
応用情報お疲れ様でした。午後の手ごたえはありましたが、午前がボロボロかも
落ちても次リベンジします。
今日はWindows環境でnetmikoを使いCiscoのSandbox上へコマンドを実行します。
netmikoとは
SSH接続を行い、コマンド操作を行うPythonライブラリの1つです。
メリットとしては多くのベンダーに対応しており、シンプルであることが挙げられます。
Windowsでvenv環境を作成する
Windowsでnetmikoを使うにはvenvを使うのが一番手っ取り早いと思います。
venvの作成
python -m venv venv
venvのアクティベート
.venv\Scripts\activate.ps1
セキュリティエラーが出る場合は管理者権限でpowerShellを実行し、
以下のコマンドを実行し、スクリプトの実行を許可する(初回のみ)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
pipのアップグレードおよびnetmikoのインストール
pip install --upgrade pip pip install netmiko
これで実行環境が完成しました。
実際にコードを試してみましょう。
実行コード
from netmiko import ConnectHandler cisco_sandbox = { 'device_type': 'cisco_ios', 'host': 'sandbox-iosxe-latest-1.cisco.com', 'username': 'developer', 'password': 'C1sco12345' } net_connect = ConnectHandler(**cisco_sandbox) output = net_connect.send_command('show ip int brief') print (output) config_commands = ['int loop 20', 'ip address 20.20.20.20 255.255.255.0'] output = net_connect.send_config_set(config_commands) print (output) output = net_connect.send_command('show ip int brief') print (output)
何をしているかというと初めにshow ip int briefを実行し、
その後Loopbackインタフェースを作成、show ip int briefを再実行しています。
コード解説
軽いコード解説をしたいと思います。
cisco_sandbox = { 'device_type': 'cisco_ios', 'host': 'sandbox-iosxe-latest-1.cisco.com', 'username': 'developer', 'password': 'C1sco12345' } net_connect = ConnectHandler(**cisco_sandbox)
接続するデバイスを辞書形式で記述しています。
ちなみに今回は1つの機器しか記述していないですが、
複数の機器を書くことが可能です。
device_typeには対応するものを記述することになってます。
接続するSandboxはこちら(誰でも使えます。)
この辞書を渡すことによってSSH接続を確立しています。
output = net_connect.send_command('show ip int brief') print (output) config_commands = ['int loop 20', 'ip address 20.20.20.20 255.255.255.0'] output = net_connect.send_config_set(config_commands) print (output) output = net_connect.send_command('show ip int brief') print (output)
コマンドを流してその結果をprintを使って表示します。
netmikoはtelnetlib(telent経由で操作する)とは違い
自動的に構成モードに入ることができます。
実行結果
それでは実行してみましょう。
最後に
初めて触りましたが、コマンドをリストで定義しているのが新鮮でした。
今回はWindows環境と誰でも使える機器を利用しているので自動化の初歩としてやるのはありかも…