びぼうろぐ

ネ申エクセルからの卒業

【python】netmikoを試してみる

保守がつらいので、Teratermマクロの置き換えを検討しています。

tekunabe.hatenablog.jp

上記ページでネットワーク自動化に使えるツールやライブラリを紹介してくださっているのですが、今いる現場のプラットフォーム的には netmiko がマッチしてそうなので、今回は netmiko を試してみます。

netmiko とは

公式では以下の通りの説明があります。

Multi-vendor library to simplify Paramiko SSH connections to network devices

要はネットワーク機器にSSHでログインして諸々の操作をしてくれるPythonのライブラリですね。

インストール

pip でインストールできます。

# python のバージョン確認
python3 --version
Python 3.6.8

# インストール実行
python3 -m pip install -U --user netmiko

# netmiko のバージョン確認
python3 -m pip show netmiko
Name: netmiko
Version: 3.1.1
Summary: Multi-vendor library to simplify Paramiko SSH connections to network devices
Home-page: https://github.com/ktbyers/netmiko
Author: Kirk Byers
Author-email: ktbyers@twb-tech.com
License: MIT
Location: /home/***/.local/lib/python3.6/site-packages
Requires: paramiko, pyserial, scp, setuptools, textfsm
Required-by:

試してみる

手持ちの環境にある vyOS に接続してみます。
公式のReadMeを参考に以下のコードを書きました。

from netmiko import Netmiko

remote_device = {'device_type': 'vyos',
                 'ip': '192.168.0.1',
                 'username': 'vyos',
                 'password': 'vyos'}

connection = Netmiko(**remote_device)

# コマンド実行
output = connection.send_command('show interface')
print(output)

connection.disconnect()

実行結果

Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface        IP Address                        S/L  Description
---------        ----------                        ---  -----------
eth0             192.168.0.1/24                    u/u  
eth1             192.168.1.254/24                  u/u  
lo               127.0.0.1/8                       u/u  
                 ::1/128

実機でコマンドを実行したときと同じ結果が取得できていることが確認できました。