ネットワークエンジニアの皆様、毎日の定常業務やキッティング作業で、ルーターやスイッチに1台ずつログインして show run や show log などのコマンドを手打ちしていませんか?
作業ミスを減らし、時間を短縮するために「TeraTermマクロ(.ttl)」は必須のツールですが、コマンドの文法をイチから調べて書くのは非常に面倒です。
そこで今回は、生成AI(Geminiなど)を使って**「面倒なTeraTermマクロを数秒で自動生成させる方法」**を解説します。 ただし、実際のIPアドレスやパスワード、ConfigをAIに入力するのはセキュリティ上絶対にNGです。インフラエンジニアとして守るべき「安全なプロンプト(指示出し)のコツ」も合わせて紹介します。
1. 現場の鉄則:機密情報(ConfigやIP)は絶対にAIに入力しない
大前提として、金融系や公共系などセキュリティ基準が厳しい現場はもちろん、一般的な企業ネットワークであっても、実機のIPアドレス、ホスト名、ルーティング情報などをパブリックなAIに入力することはご法度です。情報漏洩や、ネットワーク構成の推測に繋がる危険性があります。
AIを使う際は、「処理の枠組み(ロジック)」だけを作らせて、機密情報は後から自分で埋めるという使い方がインフラエンジニアの鉄則です。
2. Geminiを使った安全なマクロ生成プロンプト術
機密情報を出さずにAIにコードを書かせるには、**プレースホルダー(仮の文字列)**を使って指示を出すのがポイントです。
Geminiにそのままコピペして使える、おすすめのプロンプト(指示文)がこちらです。
【Geminiへの指示文(プロンプト)コピペ用】
あなたは熟練のネットワークエンジニアです。 以下の要件を満たすTeraTermマクロ(.ttl)を作成してください。
・SSHでCiscoルーターに自動ログインする。 ・ログイン後、特権EXECモード(enable)に移行する。 ・ターミナルのページングを無効化する(terminal length 0)。 ・「show clock」と「show running-config」を実行する。 ・実行結果は、マクロと同じ階層に「YYYYMMDD_hostname.log」の形式で自動保存する。 ・ログ取得が終わったらログファイルを閉じ、セッションを切断する。
【重要・セキュリティ要件】 IPアドレス、ユーザー名、パスワード、enableパスワードなどの実際の値は絶対にコード内に記述しないでください。 代わりに
[IP_ADDRESS]、[USERNAME]、[PASSWORD]、[ENABLE_PASSWORD]のような分かりやすい変数(プレースホルダー)を置き、私が後から書き換えやすいようにコメントで補足してください。
3. 出力されたコードの活用方法
上記のプロンプトをGeminiに入力すると、変数化された美しいTeraTermマクロが出力されます。
出力されたコードをテキストエディタ(サクラエディタやVSCodeなど)に貼り付けたら、先頭の方に定義されている [IP_ADDRESS] などの部分を、自分のローカル環境(AIの目の届かない場所)で実際のアドレスやパスワードに書き換えるだけです。
これで、文法エラーに悩まされることなく、ものの数十秒で目的の自動化マクロが完成します。
4. 応用編:複数台への連続ログインマクロも一瞬
少し慣れてきたら、プロンプトの条件に**「外部のIPリスト(iplist.txt)を1行ずつ読み込んで、ループ処理で順番にログインとログ取得を行う」**という一文を追加してみてください。
TeraTermマクロの鬼門である「ファイル読み込み」や「whileループ」の構文も、Geminiなら一瞬で正確に組み上げてくれます。数百台の機器のログ取得も、これを使えばお茶を飲んでいる間に終わります。
5. まとめ:AIを「安全なアシスタント」として使い倒そう
TeraTermマクロは非常に便利ですが、「マクロ言語の仕様を思い出す時間」が一番のハードルでした。 Geminiに**「実機情報を伏せた安全な指示」**を出すことで、そのハードルはゼロになります。
おまけ:AIが使えない環境の方へ(コピペ用マクロ)
「現場のセキュリティが厳しくて、業務端末から生成AIにアクセスできない…」という方のために、先ほどのプロンプトでGeminiに出力させた**「そのまま使えるTeraTermマクロの雛形」**を記載しておきます。
以下のコードをコピーしてテキストエディタに貼り付け、[IP_ADDRESS] などの [ ] で囲まれた部分を実際の環境に合わせて書き換え、拡張子を .ttl にして保存するだけで動きます。ぜひ活用して、サクッと定時退社してくださいね!
; ==========================================================
; Ciscoルーター ログ自動取得マクロ (SSH接続)
; ==========================================================; — 【書き換え箇所】実際の環境に合わせて変更してください —
HOST = ‘[IP_ADDRESS]’
USERNAME = ‘[USERNAME]’
PASSWORD = ‘[PASSWORD]’
ENAPASS = ‘[ENABLE_PASSWORD]’
TARGET_NAME = ‘[HOSTNAME]’ ; ログファイル名に使用します; — 日付の取得 (YYYYMMDD形式) —
getdate DATE ‘%Y%m%d’; — ログファイル名の生成 (マクロと同じ階層) —
getdir DIR
LOG_FILE = DIR
strconcat LOG_FILE ‘\’
strconcat LOG_FILE DATE
strconcat LOG_FILE ‘_’
strconcat LOG_FILE TARGET_NAME
strconcat LOG_FILE ‘.log’; — SSH接続コマンドの生成 —
COMMAND = HOST
strconcat COMMAND ‘:22 /ssh /2 /auth=password /user=’
strconcat COMMAND USERNAME
strconcat COMMAND ‘ /passwd=’
strconcat COMMAND PASSWORD; — ルーターへ接続 —
connect COMMAND; 接続に失敗した場合はマクロを終了
if result <> 2 then
messagebox ‘機器への接続に失敗しました。IPアドレス等を確認してください。’ ‘Connection Error’
end
endif; — ログインと特権EXECモード(enable)への移行 —
wait ‘>’ ‘#’
if result = 1 then
sendln ‘enable’
wait ‘Password:’
sendln ENAPASS
wait ‘#’
endif; — ログの取得開始 —
logopen LOG_FILE 0 0; — コマンド実行 —
; ページングの無効化(途中で止まらないようにする)
sendln ‘terminal length 0’
wait ‘#’; 時刻の確認
sendln ‘show clock’
wait ‘#’; Configの取得
sendln ‘show running-config’
wait ‘#’; — 終了処理 —
logclose
sendln ‘exit’
disconnect 0
closett; ==========================================================
【使い方のアドバイス】
- ログイン直後のプロンプトが
>か#かを自動で判定し、必要な場合のみenableパスワードを入力する親切設計になっています。 - 取得したログファイルは、このマクロファイル(.ttl)を置いたフォルダとまったく同じ場所に自動で保存されます。