概要
前回の記事では、複数のLinuxサーバーの構築作業を自動化する方法として TeraTermマクロ を紹介しました。
サーバー台数が増えてくると、次のような作業を何度も繰り返すことになります。
- SSHログイン
- コマンド実行
- 設定確認
- ログ取得
これらを手作業で行うのは時間がかかるだけでなく、人的ミスの原因にもなります。
TeraTermマクロ(TTL)を使うと、これらの操作を スクリプトとして自動実行できます。
今回はそんなTeraTermマクロ(TTL)の基本的な書き方を紹介します。
この記事では 以下の内容を整理します。
- TeratermマクロによるサーバーへのConnect
- Teratermマクロによるサーバーへのコマンド送信
- Teratermマクロによるログ出力
TeraTermマクロ(TTL)とは
TeraTermマクロは、TeraTermの操作を自動化するためのスクリプトです。
拡張子は「.ttl」になります。
このスクリプトを実行すると、TeraTermが自動的に次の操作を行います。
- サーバー接続
- コマンド送信
- 出力待ち
- ログ取得
基本的な考え方はシンプルです。
ターミナル操作
↓
そのままスクリプト化
つまり、普段ターミナルで行っている作業をそのまま自動化できます。
最もシンプルなTeraTermマクロ
まずは最も簡単なマクロを見てみます。
connect '192.168.1.10:22 /ssh /auth=password /user=***** /passwd=*****'
wait '$'
sendln 'ls'
wait '$'
このマクロは次の処理を行います。
- SSH接続
- プロンプト待ち
lsコマンド実行
非常にシンプルですが、これだけで SSH操作の自動化が可能です。
connectコマンド(サーバー接続)
connect コマンドは、サーバーに接続するための命令です。
connect '192.168.1.10:22 /ssh /auth=password /user=***** /passwd=*****'
パラメータの意味は次の通りです。
| 項目 | 内容 |
|---|---|
| 192.168.1.10 | 接続先IP |
| 22 | SSHポート |
| /ssh | SSH接続 |
| /auth=password | パスワード認証 |
| /user | ユーザー名 |
| /passwd | パスワード |
TeraTermマクロでは、この文字列を指定するだけでSSH接続が可能です。
sendlnコマンド(コマンド送信)
sendln はコマンドを送信する命令です。
sendln 'ls -l'
これはターミナルで次の操作をするのと同じです。
ls -l
Enter
つまり、「コマンド + Enter」を送信します。
waitコマンド(出力待ち)
wait は特定の文字列が表示されるまで待機する命令です。
wait '$'
これは
$
が表示されるまで待機します。
Linuxのプロンプトは通常、$または#なので、これを待つことで コマンド実行完了を確認できます。
ログ取得(logopen)
TeraTermマクロでは簡単にログを取得できます。
logopen 'output.log' 0 1 1 0
ログを取得すると、ターミナルの内容がファイルとして保存されます。
ログ取得には次のメリットがあります。
- 作業証跡を残せる
- エラー確認ができる
- トラブルシュートが容易
実際の作業では ログ取得はほぼ必須です。
TeraTermマクロの作り方
マクロは次の手順で作ると簡単です。
- 手作業でコマンド実行
- ログ取得
- TTL化(マクロ作成)
この方法を使うと、実際の操作をそのままスクリプト化できます。
TeraTermログ再生機能
TeraTermには ログ再生(Replay Log) という機能があります。
単純な作業を再実行するのであれば、この機能でも十分に使えることもあります。
ただ、この機能は単純にログをそのまま再生するのみのため、以下のような問題点があります。
- 実行がタイミング依存になるため正確にWaitできない
- 対話式のコマンドに対応できない
- マクロではないので条件分岐やループができない
- といった問題点があります。
実際に複数サーバーで実行したり、似たような処理を繰り返したりする場合は、ログを元にマクロを作成したほうが確実です。
実運用でのマクロ構成
実際の運用では、マクロを次のように分けると管理しやすくなります。
接続マクロ
+
処理マクロ
役割は次の通りです。
| マクロ | 役割 |
|---|---|
| 接続マクロ | SSH接続・ログ取得 |
| 処理マクロ | 設定処理 |
この構造にすることで、以下が可能になります。
- 接続処理の共通化
- 処理マクロの再利用
複雑な処理はシェルスクリプトにする
TeraTermマクロは便利ですが、処理が複雑になると読みにくくなります。
例えば、以下をTeratermマクロで書いてしまうと、読みにくくなる場合があります。
- 条件分岐
- ループ処理
- ファイル操作
このような場合は Linux側でシェルスクリプトを作る方が管理しやすくなります。
構成は次のようになります。
TeraTerm
↓
SSH接続
↓
シェルスクリプト実行
マクロ側は次のようにシンプルになります。
sendln '/root/setup.sh'
この方法を使うと、マクロの管理が簡単になります。
まとめ
TeraTermマクロ(TTL)は、ターミナル操作を自動化するためのシンプルなスクリプトです。
基本的なコマンドは次の4つです。
- connect
- sendln
- wait
- logopen
これらを組み合わせることで、SSH操作を自動化できます。
次回
次の記事では、TeraTermマクロでSSH接続を自動化する方法を解説します。
実際に使用している接続マクロを例に、
- 引数を使ったマクロ設計
- 接続処理の共通化
など、実運用で使えるマクロの作り方を紹介します。
このシリーズ
次の記事
前の記事