技術メモ

ネットワークエンジニアがpython, perl等々を気楽に使うための覚え書き

RLoginを使ってみた(Part2) cisco機器へのssh接続

cisco機器接続時の注意点

RLoginを使ってもう一点、つまづいたのがssh。RLoginでssh(パスワード認証)接続すると、ルータ側には、

%SSH-3-DH_RANGE_FAIL: Client DH key range mismatch with maximum configured DH key on server

のエラーメッセージで接続出来ず・・。調べてみると、IOSがサポートするDHキー長の問題らしく、

supportforums.cisco.com

にあるように、クライアント側(この場合、RLogin側)で「甘い設定」に調節してやれば良いようだ(この点、TeraTermは何にも意識せずつながるので融通が利いている・・おかげで今まで気づかずに過ごしてきた)。

以下の画面にのように、下の方に隠れているDHグループ1と14を最上段に移動し、暗号シャッフルにチェックしたらsshで接続確認出来た。

f:id:mocas:20151123214549p:plain

補足

ciscoルータのOSは以下の通り(新しいOSで試せば結果は変わるかも)。

#show ver
Cisco IOS Software, C800 Software (C800-UNIVERSALK9-M), Version 15.2(4)M3, RELEASE SOFTWARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2013 by Cisco Systems, Inc.
Compiled Tue 26-Feb-13 12:39 by prod_rel_team
...

RLoginを使ってみた(Part1) cisco機器へのCtrl+Shift+6送信

cisco機器接続時の注意点

あちこちで薦められているので、少し試してみた(version.2.19.6)。
rlogin/telnet/ssh(クライアント)ターミナルソフト

全体的にはいい感じ(TeraTermのブロードキャスト・コマンドっぽいことも簡単に出来る)。少し驚いたのが、デフォルト設定のままcisco機器に接続すると、Ctrl+Shift+6が使えなかった点。解決策として成功したのは・・

  • Ctrl+^ で代用する。
  • キーコードオプションの設定で、$PANE_SEL6(タブ表示された左から6番目のウィンドウをアクティブにしてくれるらしい)の設定を削除。

の2方法(もっと良い解決方法があるかもしれない)。

Break信号も気になったので、キーコードオプションでTeraTermと同様のAlt+Bのキーアサインを設定してみると無事成功。

マクロ機能

下記のスクリプト仕様書をざっと流し読みしてみると、(TeraTermマクロでは使えない)連想配列や関数内での変数のスコープを局所化してくれる様子。こちらは後日試してみる予定。

スクリプト仕様書 http://nanno.dip.jp/softlib/man/rlogin/script.html

python textfsm(part3) - ラッパー関数で整理

textfsmの整理

ciscoのconfigやlogといった解析対象は雑多なコマンド出力が一緒にまとめられたファイルを扱うことが多いため、以下のtextfsm_wrapper.pyを書いてみた。

  • concat_target() glob形式で対象ログを指定し、コマンド開始・終了を判定する正規表現を与えると、解析用のtextデータを返す関数
  • parse() textfsmの定義ファイル(テンプレート)読み込み・解析およびcsv出力を行う関数
続きを読む

python jinja2(part2) テンプレート継承を用いたcisco機器のconfig自動作成

ビジネス層とプレゼンテーション層

part1でjinja2は便利使えることが分かったものの、テンプレートのスッキリ感は今一つ・・・。改めてテンプレートエンジンの使い方を調べてみた。

なるほど、ビジネス層とプレゼンテーション層を意識してやるのがよさそう。ciscoのコンフィグを作る場合には、こちらの記事が参考になる感じ・・・。

ということで、テンプレートの分割(継承)を試してみる。

続きを読む

python jinja2(part1) cisco機器のconfig作成に便利なjinja2.Environment()設定

テンプレートエンジンって便利?

これまで、ネットワーク機器のコンフィグを自動生成するような目的で、テンプレートエンジンを使うのは「大げさ」だと思っていた・・・(簡単なtemplateの利用方法:python標準のstring.Templateを用いたcisco config作成スクリプト - 技術メモ

  • WEBの場合はデザイナ、プログラマの分業に役立つだろうけど、コンフィグ作成程度で分業はないよね。
  • そもそも、テンプレートエンジン独自の命令を覚えるのが面倒。慣れた言語の標準ベースで使える諸機能(ヒアドキュメント、文字列置換等)で十分。

とはいえ、自動生成ツールを作るたび、書き捨てスクリプトの山が増えていくだけの生産性の悪い現状は改善したいと思い、jinja2を試してみた。

続きを読む