アプリ

Teraterm マクロ作成 複数機器のログ取得

複数のネットワーク機器に順にログインして show 系コマンドを流し、機器ごとのログをファイルに保存する Tera Term マクロ(.ttl)を生成するアプリを公開しました。対象の機器は表で入力するほか、手持ちの CSV を取り込んで埋めることもできます。

アプリを開く

使い方

  1. ファイルと共通設定を入れる — 機器リスト CSV のパス、ログの保存フォルダとファイル名、応答待ちタイムアウト、SSH / telnet のポートを指定します。ファイル名には {host} {date} {time} {type} が使えます。
  2. 機器の種類を選ぶ — Cisco IOS / IOS-XE、FortiGate、Comware / QX-S、JunOS、YAMAHA RTX、Linux のプリセットから選びます。プロンプトやコマンドはその場で書き換えられ、プリセットにない機種は自分で追加できます。
  3. 機器リストを埋める — ホスト・接続方式・ユーザー・パスワード・種類を表に 1 行ずつ入れます。手元に一覧があれば、CSV をファイルで読ませるか貼り付けて取り込めます(置き換え/追加)。
  4. 全機器で流すコマンドを書く — 種類を問わず投入するコマンドを 1 行に 1 つ書きます。続けて種類ごとのコマンドが流れます。
  5. 出力を受け取るgetlog.ttldevices.csv がタブで切り替わります。ログの保存フォルダを作り、2 つのファイルを置いてから TTPMACRO でマクロを実行します。

マクロ本体は Shift_JIS で保存してください。UTF-8 のままだとコメントの日本語で TTPMACRO が止まります。

何に使えるか

作業前後のコンフィグ取得や、障害時の一次情報の採取です。実行後は成功・失敗の台数と、失敗した機器のホスト名がダイアログに出ます。

機器リストはマクロ本体に埋め込まず、実行時に CSV を読む形にしています。対象が変わってもマクロは作り直さずに済みます。出力される CSV は次の形です。

# host,proto,user,pass,type
192.0.2.11,ssh,admin,<パスワード>,cisco,<enable パスワード>
192.0.2.12,telnet,admin,<パスワード>,fortigate

CSV には認証情報が平文で入ります。共有フォルダに置かない、作業後に消す、といった扱いが前提です。表のパスワードは既定で伏せ字にしていますが、CSV にはそのまま出ます。

技術メモ

HTML / CSS / JavaScript のみ、index.html 1 枚です。外部 CDN に依存しておらず、入力はブラウザ内で完結してサーバには送っていません。

CSV の取り込みは FileReaderArrayBuffer として読み、TextDecoder の UTF-8 に fatal: true を付けて試し、例外が出たら Shift_JIS で読み直しています。Excel で保存した一覧が Shift_JIS で来ることが多いためです。各列の前後の空白は落とし、見出し行と # 始まりの行は読み飛ばします。5 列目の種類がプリセットにあれば、その種類のチェックも自動で入ります。分割は strsplit に合わせた単純なカンマ区切りなので、値にカンマは使えません。

機器の種類は :setdevif / elseif に展開し、CSV の 5 列目で分岐させています。コマンド投入とページャ停止も同じ形にしてあり、マクロを開けばどの機種に何を流すかが読めます。

:setdev
    known = 1
    if devtype = 'cisco' then
        prompt    = '#'
        prompt2   = '>'
        logoutcmd = 'exit'
        useen     = 1
        encmd     = 'enable'
    endif
return

昇格はログイン直後に wait prompt prompt2 で待ち、返ったのが昇格前のプロンプト(>)だったときだけ enable を送ります。すでに特権プロンプトで入った機器で詰まるのを避けるためです。

Tera Term 4.68 以降を想定しています。SSH はパスワード認証のみで公開鍵認証には対応していません。プロンプトは部分一致で判定するため、ホスト名に #> を含む機器では待ち文字列の調整が要ります。

-アプリ
-, ,