【Python】SSHで簡単にNW機器アクセスして出力表示プログラム(複数コマンド可能)

ネットワークエンジニアのほとんどの方は「TeraTerm」の「マクロ」を利用して、自動でNW機器にアクセスし、情報を出力したりなどしています。
マクロではsshで自動でアクセスをしていますが、このようなことはPythonプログラムでも簡単に実施することができます。

今回は、Pythonのsshが利用できるモジュール「Paramiko」を使用してSSHの自動アクセスとコマンド出力を実施するプログラムを紹介します。

「Paramiko」モジュールを使用してSSH接続をする(初級編)

NWエンジニアやサーバーエンジニアはNW機器にアクセスし作業をすることが多いです。
そのため毎回機器にアクセスするたびにログインID/パスワードを入力するのがめんどくさいですよね。

そんな時に、TeraTermの機能である「マクロ」を利用して自動でアクセスしてコマンド出力結果までを自動で出力することなどはよくあります。
そこで、自動で機器にアクセスをするためにSSHを利用します。

SSHとは

ということで、「SSH」ってなんなのかということですが、ネットワーク機器やPCへアクセスする手段の一つとなります。
最近では、このSSHでのアクセスが主流となっています。

以前まではtelnetを利用したアクセスが通常でしたが、telnetでは遠隔操作をする際に「平文」でやりとりをするので、第3者に盗聴や改ざんされる可能性が大いにあります。
そのため、SSHを利用することにより、データを暗号化してやりとりをし、盗聴や改ざんを受けにくくすることができます。

「Pramiko」を利用してPythonにSSH接続をする

PythonではSSHでアクセスするモジュールは複数ありますが、今回は「Paramiko」を使った方法を紹介します。
「Paramiko」を選んだ理由は、ネットでの情報が多いからですねw

さらにParamikoはSSHv2プロトコルが実装されており、クライアント機能とサーバー機能の両方を持っているところが特徴です。

「Paramiko」モジュールのインストール方法

PythonでSSHのプログラムを動かせるモジュール「Paramiko」は、pipコマンドでインストールをします。

$ pip install paramiko

正常にインストールされたら以下で、paramikoが正常に動作しているかを以下の「test.py」のようにプログラムを書き、実行してみましょう。

※ test.py

import paramiko
client = paramiko.SSHClient()

以下の実行結果のようにエラーが表示されなければ正常に動作しています。

※ 実行結果

$
$ python test.py
$

SSHでNW機器アクセスし&出力表示プログラム(複数コマンド可能)

以下では、SSHに自動にアクセスし、任意のコマンドを出力できる簡単なプログラムを作成しています。
一度の動作で複数機器にアクセスできるプログラムを作成しています。

また、ふくすの機器にアクセスできるように、関数を利用したプログラムにしています。
関数として「def」を利用していますので詳細は以下の記事を参考にしてください。

import paramiko

def ssh_cmd(ip, user, password, cmd):
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(ip, username=user, password=password, port=22)

    stdin, stdout, stderr = client.exec_command(cmd)
    print('#############n---> command = ', cmd, 'n#############n')

    for o in stdout:
        print(o, end="")
    for e in stderr:
        print(e)
    return


#NW機器
ssh_cmd('192.168.1.2', 'admin', 'pass', 'show run',)

#Server機器
ssh_cmd('192.168.1.1', 'root', 'pass', 'df -hnlsnuname -a')

※ 実行結果

$ python3 ssh_test01.py 
#############
---> command =  ls 
#############

Applications
Desktop
Documents
Downloads
Dropbox
Library
Movies
Music
Pictures
Public
VirtualBox VMs
iCloud Drive(アーカイブ)
$ 

とりあえず、PythonでSSHのプログラムを作りたく、複数の処理を一度に実行したい方はぜひ今回の記事を参考にしてください。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUT US
げんき☆ひろき
インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!