複数ホストへの同時コマンド実行(ブロードキャスト)

2021/05/18 20:10 Tera Term::使い方

ブロードキャスト機能

Tera Term というか、サーバの設定変更をしていると、複数台をまとめて設定変更したいケースが出てきます。
例えば、負荷分散している apache サーバに、それぞれ同じ静的コンテンツを格納したいとか。

そんなとき、1台ずつアクセスして、ファイルを送って、解凍して、確認して……とやっていると、最初は良くても何回か繰り返すうちにダレが出てきて、ミスを誘発するんですよね。
コマンドラインをテキストに落としておいて、サーバ毎にコピペする方法も良かったんですけど、コピペミスを劇的に減らしてくれる機能がありました。
(少なくとも私は減りました)

複数の Tera Term へ、まとめてコマンドを同時送信してくれる機能が、ブロードキャスト機能です。

ブロードキャストの使い方

どの端末でも良いのですが、メニューから「コントロール」→「ブロードキャストコマンド」を選択します。
ブロードキャスト選択


同時送信したい Tera Term 端末を選択して、送信したいコマンドを入力します。
この時、「リアルタイム」にチェックが入っていると、選択した端末に文字が送られているんですよね。
Enter を押せば、そのまま Enter が有効と。

ブロードキャスト入力


「リアルタイム」にチェックがない場合は送信ボタンをクリックするまでは送信されないので、入力ミスをチェックできるようにもなります。

また、個別に端末ウィンドウを選択すれば、選択した端末だけにコマンドを送ることも可能です。

この機能を使うときには限らないのですが、どの端末にどんなコマンドを送っているか、きちんと把握して事故の無いようにお願いします。

ログ自動取得設定を行う(デフォルト設定変更)

2021/05/21 05:01 Tera Term::使い方

ログ自動取得設定を行う(デフォルト設定変更)

ログは、ホストにアクセスした際に自動で取得を開始させることができます。
やり方は、大雑把に 3 種類あります。
ここでは、デフォルト設定の変更方法を記載します。

自動取得設定

まず、Tera Term のメニューから設定する方法です。
これは TERATERM.ini の設定内容を書き換えます。
(TERATERM.ini の詳細は teraterm.ini を参照してください)

まず、設定画面を呼び出します。
メニューから「設定(S)」→「その他の設定(D)」を選択します。

設定画面選択
設定画面選択

「標準ログファイル名(strftimeフォーマット可)(F)」に、自動で保存させたいファイル名を指定します。
また、忘れずに「自動的にログ採取を開始する(U)」にチェックを入れます。

設定内容入力
設定内容入力

※ 「標準のログ保存先フォルダ(S)」で、保存先を指定可能です。

設定変更した内容を保存するため、メニューから「設定(S)」→「設定の保存(S)」を選択します。

設定保存選択
設定保存選択

次回から自動でログ保存を行わせるために、TERATERM.ini のまま「保存(S)」をクリックします。

設定保存先選択
設定保存先選択

※ 別名で保存して Tera Term 起動時のオプションに設定ファイルを指定することで、個別に設定ファイルを読み込むことも可能です。

設定オプション

オプションは、次の通りです。
対象の項目
オプションは、デフォルトで次の通りにチェックが付けられています。

設定オプション
設定オプション

チェックの意味
それぞれ、チェックした場合の挙動は次の通りです。
オプションチェック説明
バイナリ(R)
あり
ホストから送られた文字をすべてファイルに書き込みます。エスケープシーケンス等を含みますので、テキストエディタで参照するには面倒ですが、あたかもホストから文字が送られてきたかのようにログの再生する機能を活用できます。
なし
漢字、改行コードは変換されて書き込まれます。エスケープシーケンスは書き込まれません。
追記(A)
あり
既存のファイルがあれば追記します。既存のものがなければ作ります。
なし
既存のファイルがあれば上書きします。既存のものは消えます。既存のものがなければ作ります。
プレーンテキスト(P)
あり
ASCII 非表示文字を書き込まれなくなります。バイナリで取得している場合は無効になります。
なし
ASCII 非表示文字もログに書き込まれます。
ダイアログを非表示(D)
あり
ログダイアログが表示されなくなります。あとで表示させることは可能です。
なし
ログダイアログが表示されます。ログのファイル名や現在のサイズを確認したり、途中でログ取得を一時停止したりといったことがしたい場合に便利です。
現在バッファを含む(C)
あり
現在の Tera Term に表示されているバッファも含めてログファイルに書き出します。バッファ分は、タイムスタンプ出力を選択しても無効です
なし
ログ取得開始時点からログファイルに書き出します。
タイムスタンプ(T)
あり
ログの行頭に時刻を追加できます。出力行の時刻は、その出力が開始された時刻です。コマンドが実行された時間を見る場合は、次の行のタイムスタンプになります。
なし
表示されたとおりにログ出力されます。

タイムスタンプの取得方法は、以下の選択肢があります。
選択肢機能
ローカルタイム端末の現在時刻を、ロケーションに応じて利用します。日本なら JST です。
UTC端末の現在時刻を UTC に変換して利用します。
経過時間(Logging)ログ取得開始時点からの経過時間を利用します。
経過時間(Connection)接続開始時点からの経過時間を利用します。

ログのローテート

長期間のログ取得を行いたいケース等では、ログが肥大化して不都合が発生することがあります。
そんな時に、ローテーションを行います。
対象の項目
デフォルトオプションは、チェックされていません。
ログのローテート
ログのローテート
指定の意味
チェックを入れて、次の内容で設定を行うことができます。
項目設定内容
サイズ(i)ローテーションを発生させるログのサイズを設定します。
1文字がおよそ 1byte *1です。
世代(R)過去何世代まで保存するかを設定します。例えば5世代に設定した場合、6世代目となった過去ログは削除されます。

strftime フォーマット

ログ名に指定可能な strftime フォーマットは、以下の通りです。

例えば、[アクセスしたホスト名]-[YYYY][MM][DD].log の形式にしたい場合は、&h-%Y%m%d.log と記入します。

フォーマットの詳細は strftime フォーマット で記載します。
書式意味
&hホスト名。未接続の場合は空。
&pTCP ポート番号。未接続の場合は空。TCP 接続でないときも空。
&uログオン中のユーザ名。
%a曜日の省略形。
%A曜日の正式名。
%b月の省略形。
%B月の正式名。
%cロケールに対応する日付と時刻の表現。
%d10 進数で表す月の日付 (01 ~ 31)。
%H24 時間表記の時間 (00 ~ 23)。
%I12 時間表記の時間 (01 ~ 12)。
%j10 進数で表す年初からの日数 (001 ~ 366)。
%m10 進数で表す月 (01 ~ 12)。
%M10 進数で表す分 (00 ~ 59)。
%p現在のロケールの午前/午後。
%S10 進数で表す秒 (00 ~ 59)。
%U10 進数で表す週の通し番号。日曜日を週の最初の日とする (00 ~ 53)。
%w10 進数で表す曜日 (0 ~ 6、日曜日が 0)。
%W10 進数で表す週の通し番号。月曜日を週の最初の日とする (00 ~ 53)。
%x現在のロケールの日付表現。
%X現在のロケールの時刻表現。
%y10 進数で表す西暦の下 2 桁 (00 ~ 99)。
%Y10 進数で表す 4 桁の西暦。
%z, %Zレジストリの設定に応じて、タイム ゾーンの名前または省略形を指定します。
タイム ゾーンが不明な場合は指定しません。
%%パーセント記号。

*1 : ASCII コードの場合は 1 文字 1byte だが、日本語の場合は 1 文字でも 1byte~数byte まで変化します。

ログの手動取得

2021/05/21 04:12 Tera Term::使い方

ログの手動取得

Tera Term でアクセス先サーバにログインしてコマンドで操作した情報は、ログとして取得することが可能です。
インストールのデフォルト(初期状態)では、何も保存しません。

Tera Term の画面 (バッファ) から消えてしまうと取得することができなくなってしまうため、ログイン前後でログを取得することをお勧めします。

以下の手順では、手動でログを取得します。

取得手順

Tera Term を起動した状態で、メニューから「ファイル(F)」→「ログ(L)」と選択します。

ログ保存選択
ログ保存選択

任意のフォルダを選択し、ファイル名に任意の名前を入力します。

オプション選択
オプション選択

オプションの設定内容は、次の通りです。
それぞれ、チェック項目の
あり
が、チェックを入れた場合の挙動で、
なし
の場合が、チェックを取りやめた場合の挙動の説明です。

ログ取得オプションの設定一覧
オプションチェック説明
バイナリ(R)
あり
ホストから送られた文字をすべてファイルに書き込みます。
エスケープシーケンス等を含みますので、テキストエディタで参照するには面倒です。
ただし、Tera Term の機能である「ログを再生」ではバイナリでログを取得することで、後から、あたかもホストから文字が送られてきたかのようにログを再生する機能を活用できます。
なし
漢字、改行コードは変換されて書き込まれます。
後からテキストエディタでログを参照するには適切です。
エスケープシーケンスは書き込まれません。
追記(A)
あり
既存のファイルがあれば追記します。
既存のものがなければ作ります。
なし
既存のファイルがあれば上書きします。なので、既存だったものは内容が消えます。
既存のものがなければ作ります。
プレーンテキスト(P)
あり
ASCII 非表示文字が書き込まれなくなります。
バイナリにチェックを入れた場合は無効になります。
なし
ASCII 非表示文字もログに書き込まれます。
ダイアログを非表示(D)
あり
旧来、ログを取得中には別に表示されていたログダイアログが表示されなくなります。
何十と Tera Term を開く場合には、倍の数のウィンドウが開かれてしまうので消せると便利です。
個別にログダイアログを表示させることは可能です。
なし
旧来通り、ログ取得中にログダイアログが表示されます。
次のようなことをしたい場合は、表示させる方が便利です。
・ログのファイル名や現在のサイズを確認する。
・途中でログ取得を一時停止する。
現在バッファを含む(C)
あり
現在の Tera Term に表示されているバッファも含めてログファイルに書き出します。
バッファ分は、タイムスタンプ出力を選択しても無効です。
なし
ログ取得開始時点から Tera Term の画面に表示される情報をログファイルに書き出します。
テストエビデンスを取得したい場合などで有効と思います。
タイムスタンプ(T)
あり
ログの行頭に、時刻を追加できます。
デフォルトでは、ローカルタイムが出力されます。
出力行の時刻は、その出力が開始された時刻です。
コマンドが実行された時間を見る場合は、次の行のタイムスタンプになります。
バイナリにチェックを入れた場合は無効になります。
なし
表示されたとおりにログ出力されます。

タイムスタンプの取得方法は、以下の選択肢があります。
選択肢機能
ローカルタイム端末の現在時刻を、ロケーションに応じて利用します。日本なら JST です。
UTC端末の現在時刻を UTC に変換して利用します。
経過時間(Logging)ログ取得開始時点からの経過時間を利用します。
経過時間(Connection)接続開始時点からの経過時間を利用します。

「保存」ボタンをクリックすると、ログの取得が開始されます。

strftime フォーマット

ログ名に指定可能な strftime フォーマットは、以下の通りです。

例えば、[アクセスしたホスト名]-[YYYY][MM][DD].log の形式にしたい場合は、&h-%Y%m%d.log と記入します。

strftime フォーマットの書式
書式意味
&hホスト名。未接続の場合は空。
&pTCP ポート番号。未接続の場合は空。TCP 接続でないときも空。
&uログオン中のユーザ名。
%a曜日の省略形。
%A曜日の正式名。
%b月の省略形。
%B月の正式名。
%cロケールに対応する日付と時刻の表現。
%d10 進数で表す月の日付 (01 ~ 31)。
%H24 時間表記の時間 (00 ~ 23)。
%I12 時間表記の時間 (01 ~ 12)。
%j10 進数で表す年初からの日数 (001 ~ 366)。
%m10 進数で表す月 (01 ~ 12)。
%M10 進数で表す分 (00 ~ 59)。
%p現在のロケールの午前/午後。
%S10 進数で表す秒 (00 ~ 59)。
%U10 進数で表す週の通し番号。日曜日を週の最初の日とする (00 ~ 53)。
%w10 進数で表す曜日 (0 ~ 6、日曜日が 0)。
%W10 進数で表す週の通し番号。月曜日を週の最初の日とする (00 ~ 53)。
%x現在のロケールの日付表現。
%X現在のロケールの時刻表現。
%y10 進数で表す西暦の下 2 桁 (00 ~ 99)。
%Y10 進数で表す 4 桁の西暦。
%z, %Zレジストリの設定に応じて、タイム ゾーンの名前または省略形を指定します。
タイム ゾーンが不明な場合は指定しません。
%%パーセント記号。

ログの取得方法

2021/05/21 05:10 Tera Term::使い方
Tera Term では、ログを取得するとき "開く" と言っていました。
開発言語でファイルは開く (logopen や fileopen というコマンドを利用する) ものなので、実行結果を書き込むファイルも開くもの、という感覚だったのでしょう。
いまでも、その名残を見ることができます。

現在のバージョンでは、ログを取得する際に「保存」という書き方をします。

ここでの説明は Version 4.102 (SVN# 7452) 時点のものです。

個別取得

手動取得

自動取得

設定
最終的に .ini ファイルに記述することになる設定方法です。
マクロ
マクロで、必要の都度取得したい場合の記述方法です。
ログ関係マクロコマンド一覧
コマンドバージョン機能の簡易説明

logautoclosemode4.79以降マクロ終了時、自動的にログ採取を停止する。
【Usage】logautoclosemode <flag>
logcloseTera Term のログを終了する。
【Usage】logclose
loginfo4.73以降Tera Term のログ取得状態を得る
【Usage】loginfo <strvar>
logopenTera Term のログを開始する。
【Usage】logopen <file name> <binary flag> <append flag>
4.61以降ログ再生可能なバイナリオプションの追加。
【Usage】長いため別記 *1
4.62以降ログを開けたかどうか result を返す仕様の追加。
4.80以降端末バッファをログへ含めるオプションの追加。
【Usage】長いため別記 *2
4.97以降ログ行頭へタイムスタンプを追記するオプションの追加。
【Usage】長いため別記 *3
logpauseTera Term のログを一時中断する。
【Usage】logpause
logrotate4.78以降ログをローテートする。
【Usage 1】logrotate 'size' '<size>'
【Usage 2】logrotate 'rotate' <count>
【Usage 3】logrotate 'halt'
logstart中断していた Tera Term のログを再開する。
【Usage】logstart
logwrite文字列をログに書き込む。
【Usage】logwrite <string>

その他・関連情報・備考

*1 : 【4.61以降】 logopen <file name> <binary flag> <append flag> [<plain text flag> [<timestamp flag>]]

*2 : 【4.80以降】 logopen <file name> <binary flag> <append flag> [<plain text flag> [<timestamp flag> [<hide dialog flag> [<include screen buffer flag>]]]]

*3 : 【4.97以降】 logopen <file name> <binary flag> <append flag> [<plain text flag> [<timestamp flag> [<hide dialog flag> [<include screen buffer flag> [<timestamp type>]]]]]

アクセス先への文字入力

2021/05/21 04:09 Tera Term::使い方

アクセス先への文字入力

引き続き Tera Term にログインした後の操作について書いていきます。

Tera Term で、対象のコンピュータにログインしたら、文字を入力する必要があります。
それはコマンドだったり、問い合わせの内容だったりするかもしれません。

コマンドの入力

Tera Term でログインした対象が Linux だった場合は、ほとんどがコマンド入力になります。
コマンドプロンプト(入力受付状態を示す文字)が表示されているところへ、たとえば echo 'helo world!' と入力して Enter キーを押すと、画面では hello world! を表示してくれます。
$ echo 'hello world!'
hello world!

文字コード

文字コードとは、読んで字のごとく文字に割り当てられているコードのことです。
0 と 1 の世界のコンピュータでは、文字を文字として認識するわけではなく、コード体系に則って扱われます。

たとえば50音表を、上から順番に ABCDE で割り振り、あ行を 1、か行を 2 列目と定義したとします。
A1 なら あ を表示し、
B2 なら き を表示する。

A2B1 という例コードで記述したテキストファイルを保存した場合、対応したテキストエディタでは いか と表示されるようになります。
1文字を表すためのハンコをイメージすると、テキストファイルの実態が思い浮かぶかもしれません。
こんな個人的にコード表を作らなくても、世の中は共通で使われる文字コードがあります。

もともとは、アメリカが ASCII コード (American Standard Code for Information Interchange) として標準化したものです。
アメリカで使う文字は a~z の26文字、A~Z の26文字、算術演算子等を含む記号で、100個も表現できれば問題ありませんでした。
なので 100 個のデータをきちんと識別するためには 2^7=128 という計算で 2 進数で 7 桁あれば足ります。
この 7 bit で 1 byte として利用されました。
(なので ASCII は 7 bit で 1 byte という文字コード)

この文字数は、西欧諸国の文字セットによる利用で不足するため、2^8=256 で 8 bit の文字コードが利用されました。
日本でも、半角カナを含めた 8 bit の文字コードが定義されています。

現在 8 bit = 1 byte というのは世界標準ですが、1 byte = 8 bit ではないことに注意が必要でしょう。

それでも、まともな日本語で扱いたいとき、常用漢字表でも 1945 字あるので圧倒的に桁数が不足しています。
なので日本語は 1 byte の倍である 2 byte (16bit) を使った文字コードを利用しはじめました。
UTF-8
2019年現在の主流は、UTF-8 と呼ばれる文字コードです。

正確には文字コードではなく、文字コードを扱うための符号化方式ですが、ここでは Tera Term で利用するための文字コードとして扱います。
なので UTF-16 等も説明しません。

利用する文字のバイト数も指定するので、普段利用しない文字コード分の桁数が抑えられるのが特徴でしょう。
1文字で x バイトという表現ができません。

Linux や Windows で、文字コード変換をしなくとも、標準で相互に利用できます。
EUC
Extended Unix Code という名前の略称のとおり、長く日本語環境の UNIX で利用されてきた文字コードです。

Windows で利用するためには、SJIS 等に変換する必要があります。
JIS
ASCII をもとに日本で標準化された文字コードです。
2 byte であることが特徴です。
EUC にも利用されています。
SJIS
Shift_JIS

Microsoft が開発したと聞いています。
全角カナや半角カナを識別することのできるコードで、便利なためこれも長い間利用されていました。
現在でも一部では利用されています。

これも、文字によってはビットの長さを変えられるため、1文字 x バイトという表現ができません。

改行コード

改行コードは、0 と 1 の連続である文字コードの列(文字列)にとって、見た目に必要な要素です。
また、UNIX ではコマンド実行の確定も意味しています。

UNIX では LF (Line Feed)
MachOS では CR (Carriage Return)
Windows では CR + LF

Line Feed

Line Feed は改行という意味で、次の行に改めることを差します。
コードとして定義する時代にモデルとなったタイプライターは、改行したあと手で頭の位置まで戻していたようです。

Carriage Return

これに対して、Carriage Return が意味するところは復帰
行頭まで自動で戻してくれる機能のようです。

Tera Term で利用するべき改行コードは?

Tera Term は、Windows 用ソフトウェアなので、CR + LF を利用します。

行頭まで戻したうえで改行したら?
それが Windows の仕様です。

Tera Term を通したアクセスの場合は、アクセス先とやりとりする改行コードを自動的に変換してくれます。

正規表現での利用

ファイルで直接アクセス先の操作をする場合、改行コードの変換を考慮する必要があります。

CR の文字コードは、エスケープ込みで \r
LF の文字コードは、エスケープ込みで \n

UNIX にテキストファイルを持って行った際、文字コードの除去を忘れたら正規表現を使って \r を消すと楽になるでしょう。

vi で利用可能な正規表現であれば編集モードで
:%s/\r//g
と入力することで、ファイル内のすべての \r (CR) が削除 (正確には \r を '' (Null) に置換) されます。

もっと気を付けるべきは、UTF-8 の仕様にある BOM コードの有無でしょうね。
シェルスクリプトの場合は、テキストファイルなのかバイナリファイルなのか、判別に失敗することがありますので。

もちろん Tera Term マクロで利用する改行コードは CR + LF です。