LANスイッチやルーターといったネットワーク機器の状態を把握したり設定を変更したりするときには、リモートアクセスしてコマンドを実行することが多い。

PythonでLANスイッチにリモートアクセス
LANスイッチの写真の出所はシスコシステムズ
[画像のクリックで拡大表示]

 通常は、ターミナルソフトを使ってアクセスする。Windowsでは「Tera Term」というソフトがよく使われている。ただその場合、ログインのパスワードやコマンドを入力する必要があり面倒だ。これをPythonコードで自動化してみよう。

 リモートアクセスのプロトコルとしてはTelnetを利用した。本来は、安全性が高いSSH(Secure SHell)を使うべきだが、説明を分かりやすくするためTelnetを使った。

 LANスイッチには「192.168.1.200」というIPアドレスを割り当て、特権EXECモードに入るためのパスワード(特権パスワード)として「nikkei」、Telnetのパスワードとして「remote」を設定した。

すべての入力をコードに記述する

 Pythonコードの中からTelnetでアクセスするにはtelnetlibというモジュールを利用する。

telnetlibモジュールを使ったTelnetアクセスの基本形
[画像のクリックで拡大表示]

 コードの冒頭で「from telnetlib import Telnet」と記述し、telnetlibモジュールからTelnetクラスを読み込む。

 次に「with Telnet(通信先アドレス, 23) as tn:」と記述し、tnという名前でTelnetオブジェクトを生成する。あとは「read_until関数で表示を待ち受けてwrite関数で入力する」という処理を繰り返す。この1組の処理が1回の入力に相当する。

 Telnetでリモートアクセスするための入力をPythonコードに記述すれば、あとは自由にコマンドを実行できる。例えば、「show ip interface brief」というコマンドを実行し、各ポートに割り当てられているIPアドレスを表示できる。ここでは1Gビット/秒対応ポートにLANケーブルを接続しているので、このポートだけIPアドレスが表示されている。

Telnetでアクセスしてコマンドを実行するPythonコードの実行結果
[画像のクリックで拡大表示]

この先は日経クロステック Active会員の登録が必要です

日経クロステック Activeは、IT/製造/建設各分野にかかわる企業向け製品・サービスについて、選択や導入を支援する情報サイトです。製品・サービス情報、導入事例などのコンテンツを多数掲載しています。初めてご覧になる際には、会員登録(無料)をお願いいたします。