全3013文字
PR

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

Pythonで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アクセスの基本形
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コードの実行結果
Telnetでアクセスしてコマンドを実行するPythonコードの実行結果
[画像のクリックで拡大表示]

この記事は有料会員限定です

日経クロステック有料会員になると…

専門雑誌8誌の記事が読み放題
注目テーマのデジタルムックが読める
雑誌PDFを月100pダウンロード

日経電子版セット今なら2カ月無料