質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Cisco

シスコ(Cisco Systems,Inc.)は、アメリカ合衆国に本社を置く、世界最大のコンピュータネットワーク機器開発会社及び同社の製品

Q&A

解決済

1回答

2154閲覧

PythonでCisco機器へコンソール接続

d415uke

総合スコア4

Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Cisco

シスコ(Cisco Systems,Inc.)は、アメリカ合衆国に本社を置く、世界最大のコンピュータネットワーク機器開発会社及び同社の製品

0グッド

0クリップ

投稿2020/09/10 14:38

編集2020/09/12 17:22

前提・実現したいこと

cisco機器(ASRシリーズやNCSシリーズ)にpythonでコンソール接続して自動で
コマンド入力(show version,show platform,show ip interfaceなど)、および出力結果のステータス確認(ポートがup/upになっているかetc)を行うマクロを作ろうとしています。
今まではteratermマクロを作成してやっていましたが、可読性・可変性に欠けるということでpythonマクロに書き換えようと挑戦しています。
マクロのコーディング以前に、pythonでのコンソール接続の方法が不明であったり、teratermのようなcisco機器と対話するターミナル画面がどこにあるのか不明なので、ご教授いただければ幸いです。

問題点

1.pythonでコンソール接続できること 2.pythonでciscoコマンドを流せること(show version,show platformなど)  ※そもそもcisco機器と対話するターミナル画面がどこにあるのか、、、 3.上記コマンドの出力結果からステータス確認するため、出力結果をpython側でどうやって受け取るか

現状

1.はpyserialというモジュールを利用してコンソール接続ができそうなことを確認しました。 2.現状、ここで詰まっています。  teratermだと下記のコマンドでciscoコマンドを流しています。  「Sendln 'show version'」。 3.teratermだど下記のコマンドでciscoコマンドによる出力結果を1行1行を取得しています。  「inputstr」  pythonでも同じようなコマンドがあるのか?

試したこと

1.pyserialというモジュールでコンソール接続ができそうなことは確認できました。
下記にコードを記載しておきます。

import serial ser = serial.Serial() ser.baudrate = 9600 #このCOM番号は可変なので自分で設定します ser.port = 'COM10' ser.open() print(ser.is_open) #出力結果:true #ここにciscoコマンドを流し込むプログラムを記載すると思われる ser.close() print(ser.is_open) #出力結果:false

print(ser.is_open)の出力結果がtrueだからコンソール接続はできているのか?
cisco機器と対話するターミナル画面がないから、確認できない、、、

最後に

今回はコンソール(シリアル)接続で試しているか、難しそうならsshでも挑戦しようと思っています。
teratermならアプリを立ち上げると自動でcisco機器と対話するターミナル画面が表示されるが、
pythonでも同様のターミナル画面はあるのか疑問です。

利用環境

・windowns 10 64bit
・Python 3.8.5
・C:\Users***>pip list
Package Version


astroid 2.4.2
colorama 0.4.3
isort 5.5.2
lazy-object-proxy 1.4.3
mccabe 0.6.1
pip 20.2.3
pylint 2.6.0
pyserial 3.4
setuptools 50.3.0
six 1.15.0
toml 0.10.1
wrapt 1.12.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ご提示の通り、pySerialを利用すれば良いです。
https://pythonhosted.org/pyserial/shortintro.html#opening-serial-ports
この辺が参考になるかと。

readで相手のデータを読み込み、writeで相手にデータを送る。

pythonでも同様のターミナル画面はあるのか

これは何を期待しているのかよくわかりかねますが、pythonとの対話という意味では、pythonを実行すると、対話画面が出てきて、pythonの文法を受け付けるようになります。(上記URLでも記載されている)

teratermのようにciscoと接続した際にやり取りをするターミナルという意味ではありません。
pySerialのhttps://pythonhosted.org/pyserial/examples.htmlが参考になるのかもしれません。

投稿2020/09/10 16:05

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

d415uke

2020/09/12 17:21

接続確認及びシスコ機器へのコマンドの流し込みに成功しました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問