【TeraTerm】マクロ(ttlファイル)で作業効率化を図ろう!

開発ツール

はじめに

こちらの記事で紹介したTeraTermの深堀りです。

TeraTermは、ネットワークエンジニアやサーバー管理者にとって欠かせないツールの一つです。
その中でも特に便利なのが「TeraTermマクロ(ttlファイル)」です。マクロを活用することで、手作業を自動化し、作業効率を大幅に向上させることができます。
本記事では、TeraTermマクロの基礎から活用事例までをわかりやすく解説します。

そもそもTeraTermとは

TeraTermは、Windows用の無料ターミナルエミュレータです。
SSHやTelnetなどのプロトコルをサポートしており、サーバーやネットワーク機器への接続に広く使用されています。操作がシンプルでありながら、多機能で拡張性が高い点が特徴です。
以下からダウンロードすることができます。

Releases · TeraTermProject/teraterm
Contribute to TeraTermProject/teraterm development by creating an account on GitHub.

開発用のサーバー・実際に商用で動作するサーバー(本ブログを公開しているサーバーなど)にリモートアクセスしてコマンド操作する時に使います!

TeraTermマクロの基礎知識

TeraTermマクロとは

TeraTermマクロは、TeraTermで繰り返し行う操作を自動化するためのスクリプトです。
拡張子が「.ttl」のテキストファイルとして保存され、簡単な記述で高度な自動化が可能です。例えば、ログイン処理や定型的なコマンド実行、ログ取得などに活用できます。

TeraTermマクロの文法

コメント

セミコロン(;)以降の内容はコメントとして無視されます。

; これはコメントです

セミコロン(;)以降の内容はコメントとして無視されます。

変数の宣言

変数は特に型を指定せず、自由に使用できます。

str = "Hello, Tera Term!" ; 文字列変数
num = 100                 ; 数値変数

基本的なコマンド

接続

リモートサーバーに接続するコマンドです。

connect COMMAND
データ取得

get ~ でデータ取得をするコマンドです。例では現在のディレクトリとタイムスタンプを取得しています。

getdir DIR
gettime TIMESTAMP "%Y%m%d_%H%M%S"

文字列結合

文字列を結合できます。変数を結合してコマンドを作成するような使い方をしています。

strconcat str1 str2

ログファイルを開く

ログを書き込むためにログを開きます。

  • 0: ファイルを上書きモード。
  • 1: 送信データもログに記録。
  • 0: リモートホストの応答ログは記録しない。
  • 1: 日本語対応エンコード。
  • 1: 1秒ごとにフラッシュ。
logopen LOGFILE 0 1 0 1 1

TeraTermマクロ活用のメリット

TeraTermマクロを活用することで得られる主なメリットは次の通りです:

  • 作業時間の短縮:手動操作を自動化することで、反復作業に費やす時間を削減できます。
  • エラーの防止 :人為的なミスを減らし、正確な作業を実現します。
  • 作業記録   :ログファイルを自動で取得することで、どんな作業をしたか記録することができます。

また、特に大量のサーバー管理が必要な環境では、マクロを使うことで効率が劇的に向上します。

実際に使用しているマクロ紹介

以下は筆者が実際に利用しているTeraTermマクロの例です。これらを参考に、読者の環境に合わせてカスタマイズしてください。

SSH自動ログイン(パスワード) + ログ収集のスクリプト

;=====================================================================
; 接続情報
HOSTADDR  = <IPアドレス>
USERNAME  = <ユーザー名>
PASSWORD  = <パスワード>
;=====================================================================

; 処理ディレクトリを現在ディレクトリに変更
getdir DIR
setdir DIR

; コマンドオプション組立て
COMMAND = HOSTADDR
strconcat COMMAND ':22 /ssh /2 /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /passwd='
strconcat COMMAND PASSWORD

; 接続
connect COMMAND

; ログファイルのパスを指定
LOG_DIR = <ログを格納するディレクトリパス>
; タイムスタンプ取得
gettime TIMESTAMP "%Y%m%d_%H%M%S"
; ログファイル名を設定
sprintf2 LOGFILE '%s\%s.log' LOG_DIR TIMESTAMP
; ログ取得を開始
logopen LOGFILE 0 1 0 1 1

このスクリプトは、特定のIPアドレスのサーバーに自動的にSSH接続を行います。手動での認証作業が不要になるため便利です。またログを指定したディレクトリに自動で取得するので作業の記録を残すことができます。

SSH自動ログイン(公開鍵認証) + ログ収集のスクリプト

こちらは公開鍵認証認証のパターンです。

;=====================================================================
; 接続情報
HOSTADDR = <IPアドレス>
USERNAME = <ユーザー名>
KEYFILE  = <秘密鍵のパス
;=====================================================================

; 処理ディレクトリを現在ディレクトリに変更
getdir DIR
setdir DIR

; コマンドオプション組立て
COMMAND = HOSTADDR
strconcat COMMAND ':22 /ssh /2 /auth=publickey /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /keyfile='
strconcat COMMAND KEYFILE

; 接続
connect COMMAND

; ログファイルのパスを指定
LOG_DIR = <ログを格納するディレクトリパス>
; タイムスタンプ取得
gettime TIMESTAMP "%Y%m%d_%H%M%S"
; ログファイル名を設定
sprintf2 LOGFILE '%s\%s.log' LOG_DIR TIMESTAMP
; ログ取得を開始
logopen LOGFILE 0 1 0 1 1

まとめ

TeraTermマクロを活用することで、業務効率化やミスの削減が実現できます。本記事では基礎から応用まで幅広く紹介しましたが、最初は簡単なスクリプトから試し、徐々に応用的なスクリプトに挑戦してみてください。

自動化の効果を実感すれば、日常業務が驚くほど楽になるはずです。次のステップとして、複雑な業務フローの自動化にもチャレンジしてみてはいかがでしょうか?

参考文献

コメント

Verified by MonsterInsights
タイトルとURLをコピーしました