ネットワークエンジニアのほとんどの方は「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のプログラムを作りたく、複数の処理を一度に実行したい方はぜひ今回の記事を参考にしてください。
サーバーを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す