netmikoとparamikoは、どちらもPythonでネットワークデバイスを操作するためのモジュールですが、netmikoの方がよりネットワークデバイスに対する操作を簡単に行えるようになっています。
netmikoとparamikoの違いは次の通りです。
netmikoとparamikoの主な違いは、netmiko はネットワークデバイスを操作するためのモジュールであるのに対し、paramiko は SSH プロトコルを使ってデバイスに接続するためのモジュールであるという点です。 netmiko を使えば、簡単にネットワークデバイスを操作することができますが、paramiko であればネットワークデバイスに限らず、SSH プロトコルを使ってデバイスに接続することができます。どちらのモジュールを使うかは、ニーズに応じて選択しましょう。
具体的なコマンドラインを使って netmiko を使ってネットワークデバイスを制御する例を見ていきましょう。 まず、Python プログラムから netmiko モジュールをインポートします。
from netmiko import ConnectHandler
次に、接続するデバイスの接続情報を辞書型で用意します。
device = {
'device_type': 'cisco_ios',
'ip': '192.168.1.1',
'username': 'admin',
'password': 'password',
}
'device_type' キーには、接続するデバイスの種類を指定します。 'device_type' には、以下のような値を指定することができます。
'ip' キーには、接続するデバイスの IP アドレスを、'username' キーには、接続するデバイスのユーザ名を、'password' キーには、接続するデバイスのパスワードを指定します。
続いて、ConnectHandler 関数を使って、指定したデバイスに接続します。
ssh = ConnectHandler(**device)
ここで、ConnectHandler 関数には、device 変数を展開して渡しています。 これにより、device 変数に格納された接続情報が、ConnectHandler 関数の引数として渡されます。
接続した後は、ssh 変数に格納されたオブジェクトから、netmiko モジュールの機能を使って、デバイスに対してコマンドを実行します。
例えば、以下のように、send_command メソッドを使って、デバイスに対してコマンドを実行できます。
output = ssh.send_command('show version')
print(output)
send_command メソッドには、実行するコマンドを文字列で渡します。send_command メソッドは、指定したコマンドを実行し、その結果を文字列で返します。 send_command メソッドの返り値を output 変数に格納し、print 関数で出力することで、デバイスからのコマンド実行結果を表示することができます。
また、以下のように、send_config_set メソッドを使って、デバイスの設定を変更することもできます。
output = ssh.send_config_set(['interface GigabitEthernet0/1', 'description Configured by Python'])
print(output)
send_config_set メソッドには、設定を行うコマンドのリストを渡します。
最後に、接続したデバイスを切断します。
ssh.disconnect()
その他にも、netmiko モジュールには、便利な機能がたくさんあります。
例えば、以下のような機能があります。
これらの機能を使うことで、より複雑で細かい操作を行うことができます。 詳細なドキュメントはGitHubを確認してみてください。
ここまで解説してきたスクリプトをまとめると次のようになります。
from netmiko import ConnectHandler
# デバイスの接続情報を設定
device = {
'device_type': 'cisco_ios',
'ip': '192.168.1.1',
'username': 'admin',
'password': 'password',
}
# デバイスに接続
ssh = ConnectHandler(**device)
# show version コマンドを実行
output = ssh.send_command('show version')
print(output)
# interface GigabitEthernet0/1 の description を変更
output = ssh.send_config_set(['interface GigabitEthernet0/1', 'description Configured by Python'])
print(output)
# デバイスを切断
ssh.disconnect()
実行結果は次の通り。
Cisco IOS Software, C2960X Software (C2960X-UNIVERSALK9-M), Version 15.2(2)E5, RELEASE SOFTWARE (fc3)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2014 by Cisco Systems, Inc.
Compiled Wed 10-Dec-14 21:25 by prod_rel_team
ROM: Bootstrap program is C2960X boot loader
BOOTLDR: C2960X Boot Loader (C2960X-HBOOT-M) Version 15.2(2r)EX5, RELEASE SOFTWARE (fc1)
switch uptime is 1 hour, 29 minutes
System returned to ROM by power-on
System image file is "flash:/c2960x-universalk9-mz.152-2.E5.bin"
This product contains cryptographic features and is subject to United States and local country laws governing import, export, transfer and use. Delivery of Cisco cryptographic products does not imply third-party authority to import, export, distribute or use encryption. Importers, exporters, distributors and users are responsible for compliance with U.S. and local country laws. By using this product you agree to comply with applicable laws and regulations. If you are unable to comply with U.S. and local laws, return this product immediately.
A summary of U.S. laws governing Cisco cryptographic products may be found at:
http://www.cisco.com/wwl/export/crypto/tool/stqrg.html
If you require further assistance please contact us by sending email to
export@cisco.com.
Cisco WS-C2960X-24PS-L (PowerPC405) processor (revision C0) with 118784K/12288K bytes of memory.
Processor board ID FCZ1944W0K6
Last reset from power-on
3 Gigabit Ethernet interfaces
1 terminal line
1 Virtual Private Network (VPN) Module
32K bytes of non-volatile configuration memory.
Configuration register is 0xF
interface GigabitEthernet0/1
Configured by Python
interface GigabitEthernet0/1
description Configured by Python
最初に show version コマンドを実行し、その結果が出力されたあとに、interface GigabitEthernet0/1に対してdescriptionを設定しています。
ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!
これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。
もちろん無料です!!
↓メールマガジン購読はこちら↓