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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Python

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

Q&A

2回答

3841閲覧

TextFSMを使用するとエラーになる

narururu

総合スコア172

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Python

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

0グッド

0クリップ

投稿2020/02/24 07:28

編集2020/02/24 07:52

目的

TextFSMを使用して出力させたい。

環境

◇対象機器
機種:Canalyst 3560E-UNIVERSALK9-M
バージョン:15.2(4)E1

◇以下のURLからntc-templatesはダウンロード済み。
https://github.com/networktocode/ntc-templates
解凍したntc-templatesはユーザディレクトリに格納済み。

◇textfsmもインストール済み。
以下pip listの出力結果。

Package Version ------------ ------- bcrypt 3.1.7 cffi 1.14.0 cryptography 2.8 future 0.18.2 netmiko 3.0.0 paramiko 2.7.1 pycparser 2.19 PyNaCl 1.3.0 pyserial 3.4 scp 0.13.2 six 1.14.0 textfsm 1.1.0

想定結果

sh ip intの結果がリストの形で出力される。

現状

以下のエラーが表示される。

Traceback (most recent call last): File "python-ssh2.py", line 18, in <module> output = net_connect.send_command("sh ip int", use_textfsm=True) File "ファイルのパスnetmiko\base_connection.py", line 1424, in send_command template=textfsm_template, File "ファイルのパス\netmiko\utilities.py", line 276, in get_structured_data template_dir = get_template_dir() File "ファイルのパス\netmiko\utilities.py", line 229, in get_template_dir raise ValueError(msg) ValueError: Valid ntc-templates not found, please install https://github.com/networktocode/ntc-templates and then set the NET_TEXTFSM environment variable to point to the ./ntc-templates/templates directory.

コード

from netmiko import ConnectHandler from pprint import pprint my_device = { "device_type": "cisco_ios", 'ip':'IPアドレス', 'username':'アカウント', 'password':'ログインパスワード', 'secret':'特権パスワード', } net_connect = ConnectHandler(**my_device) net_connect.enable() output = net_connect.send_command("sh ip int", use_textfsm=True) pprint(output)

エラー文に記載されていた以下2つのファイルを確認してはいるのですが、原因が掴めず。。。
対象行をピックアップしました。
base_connection.py
※1424行目

# If both TextFSM and Genie are set, try TextFSM then Genie if use_textfsm: structured_output = get_structured_data( output, platform=self.device_type, command=command_string.strip(), template=textfsm_template, ←1424行目 )

utilities.py
※229行目

raise ValueError(msg) ←229行目 return os.path.abspath(template_dir)

※276行目

if template is None: if attrs == {}: raise ValueError( "Either 'platform/command' or 'template' must be specified." ) template_dir = get_template_dir() ←276行目 index_file = os.path.join(template_dir, "index") textfsm_obj = clitable.CliTable(index_file, template_dir) return _textfsm_parse(textfsm_obj, raw_output, attrs) else: template_path = Path(os.path.expanduser(template)) template_file = template_path.name template_dir = template_path.parents[0] # CliTable with no index will fall-back to a TextFSM parsing behavior textfsm_obj = clitable.CliTable(template_dir=template_dir) return _textfsm_parse( textfsm_obj, raw_output, attrs, template_file=template_file )

グエー(_)
一体何が原因ナンダー(_)
どなたかお助けくださいー(T_T)

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

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

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

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

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

guest

回答2

0

すでに解決しているかと思いますが私も同様のエラーが出て躓いておりましたが、以下のように環境変数を設定することで解決しました。

python

1import os 2os.environ['NET_TEXTFSM'] = '/usr/local/var/pyenv/versions/3.8.1/lib/python3.8/site-packages/ntc_templates/templates'

投稿2020/12/11 20:44

kuroro1991

総合スコア23

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

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

0

Valid ntc-templates not found

なので、テンプレートが見つかりませんと言われてますね。

https://pypi.org/project/netmiko/
によると、
①[環境変数 NET_TEXTFSM]/templates
②①の指定がなければ [ユーザーのホームディレクトリ]/ntc-template/templates
の階層をテンプレートの置き場所として参照するようです。

解凍したntc-templatesはユーザディレクトリに格納済み。

とありますが、階層構造を一度確認した方がよいかもしれません。
階層構造が間違っているようでしたら、以下のいずれかの方法をお試しいただけるとよいのかなと思います。


export NET_TEXTFSM=templatesフォルダのある階層
のように環境変数を指定してからプログラムを実行する

[ユーザーのホームディレクトリ]/ntc-template/templates
の階層構造を作ってテンプレートを置く

投稿2020/02/26 12:28

atsumi_

総合スコア8

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

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

narururu

2020/02/29 09:02 編集

ご回答ありがとうございます!atsumi_さん☺ 環境変数に関しては、よく意味が分からないので「環境変数を編集」でexport NET_TEXTFSM=templatesを追加してみました。 しかし、結果は変わらずでした。。 また、テンプレートの置き場所は、ご提示いただいた場所になっていることを確認済みです。(cmdでdirコマンドで確認しました) 機械オンチな自分がイヤになってきました(._.)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問