「非公式シリーズ」netmikoのデバイスタイプに指定できるdevice typeを調べるためのpythonスクリプト

netmikoを使うときに、以下のリンク先のnetmikoの公式サイト(netmikoのGitHub)にのってるサンプルスクリプトがなにかと参考になります。例えば、使用できるdevice typeを調べる方法とか、ログをとる方法が載ってたり。

ただ、netmikoの公式サイト(netmikoのGitHub)にのってるサンプルスクリプトだと、説明が何もないのでnetmikoをこれから使おうと言う方にはちょっと厳しめです。(英語だし、、、)

そこで、勝手にnetmiko公式サイト(netmikoのGitHub)のサンプルスクリプトを、日本語での意味などを追記して掲載しているシリーズです。

今回は、デバイスタイプに指定できるdevice typeを調べるためのpythonスクリプトです。

バイスタイプに指定できるdevice typeを調べるためのpythonスクリプト

available_device_types.py

from netmiko import ConnectHandler

# デバイスタイプに'invalid'と指定
cisco1 = {
    "device_type": "invalid",
    "host": "cisco1.lasthop.io",
    "username": "pyclass",
    "password": "invalid"
}

net_connect = ConnectHandler(**cisco1)

net_connect.disconnect()

解説

サンプルスクリプトのように、device_typeの値に"invalid"と指定したスクリプトを実行するとエラーとなります。
このとき、数行エラーメッセージが出力されますが、そのあとに使用できるデバイスタイプ一覧がされ、使用できるデバイスタイプ一覧を確認することができます。
(実は、device_typeは"invalid"でなくても、適当な文字列でもかまいません)

今回の方法で確認できるのは、ssh接続を行いたいときに使用するdevice_typeなります。
もし、telnet接続を行いたいときに使用するdevice_typeを確認したい方は、device_typeの値に"invalid_telnet"と指定してください。
(device_typeの名前の_telnetが後ろに付くと、telnet接続を使用するようにnetmikoは実装されています)

また、本サンプルスクリプトは、実行してもエラーとなるため実際にはリモート接続を行わないため、"host"や"username"などは、適当な文字列でも問題ありません。

実行例

> python  .\available_device_types.py    
Traceback (most recent call last):
  File "available_device_types.py", line 28, in <module>
    net_connect = ConnectHandler(**cisco1)
  File "\netmiko\ssh_dispatcher.py", line 321, in ConnectHandler
    raise ValueError(
ValueError: Unsupported 'device_type' currently supported platforms are:
a10
accedian
adtran_os
alcatel_aos
alcatel_sros
allied_telesis_awplus
apresia_aeos
arista_eos
aruba_os
aruba_osswitch
aruba_procurve
avaya_ers
avaya_vsp
broadcom_icos
brocade_fastiron
brocade_fos
brocade_netiron
brocade_nos
brocade_vdx
brocade_vyos
calix_b6
cdot_cros
centec_os
checkpoint_gaia
ciena_saos
cisco_asa
cisco_ftd
cisco_ios
cisco_nxos
cisco_s300
cisco_tp
cisco_wlc
cisco_xe
cisco_xr
以下は省略