MENU
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
カテゴリー
  • IT関連 (623)
    • Bootstrap (2)
    • クラウド (4)
    • サーバー技術 (185)
    • ストレージ (7)
      • NetApp (7)
    • ネットワーク技術 (91)
      • Cisco (36)
      • Juniper (18)
      • 負荷分散装置 (17)
    • パソコン関連 (92)
      • MAC (25)
      • Windows (54)
    • プログラミング (154)
      • Ansible (11)
      • C言語 (23)
      • Python (111)
        • Django (20)
    • 仮想化 (88)
      • Docker (63)
      • VMware (23)
  • VPS (200)
    • ABLENET VPS (16)
    • Amazon Lightsail(VPS) (2)
    • ConoHaVPS (37)
    • mixhostVPS (4)
    • WebARENAIndigo (16)
    • XServerVPS (34)
    • お名前.com VPS (12)
    • さくらのVPS (24)
    • カゴヤクラウドVPS (13)
    • シンVPS (7)
  • レンタルサーバー (56)
    • エックスサーバー (38)
  • 光回線 (8)
  • 技術スキルアップ開発・学習 (7)
    • Envader (2)
    • RareTECH (2)
    • Udemy (3)
もう現役20年超えましたー。経験値ならだれにも負けないエンジニア技術ブログ
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
インフラエンジニアの技術LOG
  • VPS(レンタルサーバ)比較
  • ITエンジニアの転職
  • IT技術入門(Engineers.LOG)
  1. ホーム
  2. IT関連
  3. プログラミング
  4. Python
  5. 【Python】Cisco機器へのSSH接続と複数コマンド実施・ファイル書き込みプログラム

【Python】Cisco機器へのSSH接続と複数コマンド実施・ファイル書き込みプログラム

2020 5/29
Python
2020年4月20日2020年5月29日

Pythonプログラムで「tkinter」と「paramiko」を利用し、Cisco機器へ自動アクセス・任意の複数のコマンドの出力結果を出力するプログラムを作成しました。

Cisco機器だけでなく、そのほかのSSHで接続できる機器であれば、互換性はあるので参考にしてください。

このプログラムを実行したPythonのバージョンは以下となります。

PS C:> python -V
Python 3.8.1
目次
安くて高速!高性能VPSで快適開発!
最速5分でサーバー構築
>>>こちらをチェック

エンジニア必見! 技術力を伸ばすVPS徹底比較
>>>VPS比較

「tkinter」と「paramiko」ライブラリでCisco機器に複数コマンド実行&ファイル出力プログラム

現在、Pythonで自動でNW機器のパラメーターシートを作成するプログラムを作成中で途中ですが、NW機器へのSSHアクセスをコマンドの出力結果を出すコードを展開します。

Cisco機器では複数コマンドを利用する場合、いろんなサイトでは結構難しいコードを書いているのですが、paramikoライブラリを利用した複数コマンドは以下のようになります。

'show version ; show ip route ; show run'

使用したいコマンドの間に「スペース」とセミコロン「;」を使って区切ることにより、複数コマンドを実行することができます。

また、アクセス時にtkinterを使用し、アクセス用のアプリを起動し、アクセス先のIP、ユーザー名、パスワードを設定することで自動でコマンドを出力してくれます。
以下でプログラムを記載しました。

NW機器へのSSH接続と出力結果をファイルで出力するコード

今回作成したコードは以下となります。

事前に「tkinter」と「paramiko」をpythonでインストールしていることが条件となります。

出力するコマンドは「show ver」、「show ip route」、「show run」となります。
ここはコマンド編集できますし、区切れば何個でも出力することができます。

※ ssh_test_tkinter_00_ssh_test.py

import tkinter
from tkinter import messagebox
import paramiko

#ボタンがクリックされたら実行
def button_click():
    input_host_value = input_name.get()
    input_name_value = input_address.get()
    input_pass_value = input_pass.get()
    input_command_value = ('show version ; show ip route ; show run')


    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(input_host_value, username=input_name_value, password=input_pass_value)

    stdin, stdout, stderr = client.exec_command(input_command_value)
    stdin.write(input_command_value)

    for o in stdout:
        with open('file.txt', 'a', newline='') as f:
            print(o, end='', file = f)
            #print(o)  ←通常に出力したいときは#を削除

    for e in stderr:
        print(e)

    client.close()
    root.quit()
  
print('コンフィグ取得 > テキストファイル保存完了')


# tkinter_ウインドウの作成
root = tkinter.Tk()
root.title("SSH_LOG_GET GUI")
root.geometry("350x120")

# host/IPaddress
input_name_label = tkinter.Label(text="host")
input_name_label.grid(row=1, column=1, padx=10,)

# host/IPaddress入力欄の作成
input_name = tkinter.Entry(width=40)
input_name.grid(row=1, column=2)


# userID
input_address_label = tkinter.Label(text="name")
input_address_label.grid(row=2, column=1, padx=10,)

# userID入力欄の作成
input_address = tkinter.Entry(width=40)
input_address.grid(row=2, column=2)


# パスワード
input_pass_label = tkinter.Label(text="password")
input_pass_label.grid(row=3, column=1, padx=10,)

# パスワード入力欄の作成
input_pass = tkinter.Entry(show='*', width=40)
input_pass.grid(row=3, column=2)


#ボタンの作成
button = tkinter.Button(text="実行ボタン",command=button_click)
button.place(x=150, y=90)

#ウインドウの描画
root.mainloop()

実行結果

PS C:> python ssh_test_tkinter_00_ssh_test.py

プログラムを実行すると以下のようにtkinterでアプリが起動します。
sshログインに必要な情報を記入して「実行ボタン」をクリックします。

うまくいくと以下のようにテキストファイルへの保存が完了したメッセージが表示されます。

PS C:> python ssh_test_tkinter_00_ssh_test.py
コンフィグ取得 > テキストファイル保存完了
PS C:>

ファイル形式は、テキストファイル、CSVファイル可能です。
Excelファイルは変換をしないといけないので以下の記事を参考にしてください。

あわせて読みたい
【Python】CSVとエクセル(xlsx)の変換プログラム PythonでCSVファイルをエクセルファイルに変換するプログラムを紹介します。 また、今回はサーバー、もしくはNW機器にで出力した結果において「スペース」となっている...

Cisco機器用に複数コマンドを使用したい場合などは参考にしてください。

エンジニアスキルをアップする勉強法

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

あわせて読みたい
現役エンジニアがおすすめするVPSレンタルサーバ比較(高速SSD限定) 格安VPS比較(2025年最新版)

Python
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする コメントをキャンセル

email confirm*

post date*

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



検索
カテゴリー
新着記事
  • XServerVPS アニメ風 男の子 プログラミングをしている VPSを利用している 楽しそうにしている
    XServerVPSで証明書(SSL)を取得する方法
    2025年3月24日
    XServerVPS
  • レンタルサーバ アニメ風 女の子 楽しんでパソコンをしている 目がキラキラ
    WordPressがレンタルサーバよりVPSで利用する方がおすすめの理由
    2025年3月19日
    VPS
  • VPS レンタルサーバー アニメ風 女の子 プログラミングをしている VPSを利用している 楽しそうにしている
    VPSとクラウドの違いとは?初心者向けにわかりやすく解説
    2025年3月5日
    VPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSはWindows serverを利用できない。その理由と利用できるOSは?
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSでゲームを利用する環境はあるのか
    2025年3月4日
    シンVPS
  • シンVPS アニメ風 女の子 パソコン プログラミングをしている VPSを利用している 楽しそうにしている
    シンVPSのサイトの表示速度は他社に比べて早いのか?
    2025年3月4日
    シンVPS
目次
目次