はじめに

平素は大変お世話になっております。
クイックガードのパー子です。

4月は入社の季節ですね。

この記事では新人エンジニアの皆様に向けて、エンジニアが毎日使うツールであるターミナル・エミュレータの 1つ「Tera Term」を解説していきたいと思います。

Tera Term とは?

言わずと知れた Windows用の定番ターミナル・エミュレータ。
SSH の他、Telnet やシリアル接続も可能な多機能端末ソフトです。

https://ttssh2.osdn.jp/

なぜ Tera Term を使うのか?

クイックガードでは Tera Term を入門用のターミナルと位置付けており、新人にはまず Tera Term をオススメしています。

正直、最新のターミナル・エミュレータと比べれば使い勝手や視認性で見劣りしますが、

  • 枯れた安定性
  • 安全に作業できるだけの最低限の機能

を備える Tera Term でターミナル操作の基本を学んでもらっています。

もちろん、ターミナル操作に慣れたら別のエミュレータに切り替えるのは自由ですし、私も普段は Mac + iTerm2 を使っています。 😊

Tera Term の便利機能

マクロ

Tera Term にはマクロ機能が搭載されており、各種操作を自動化できます。

クイックガードでは Rundeck なども活用しているので Tera Term のマクロで運用作業をゴリゴリ自動化することはないのですが、障害対応のために秒速でサーバにログインする必要があり、その接続先管理にマクロを利用しています。

例えば、踏み台サーバ (ホスト名: ssh-bastion) を経由して目的サーバ (ホスト名: target-server) にログインするためのマクロは以下のようになります。

connect 'ssh-bastion:22 /ssh2 /auth=publickey /user=ec2-user /keyfile="C:\key\quickguard.pem"'

wait '$'

sendln 'ssh -i ./.ssh/id_ecdsa ec2-user@target-server'

wait '$'

テキスト・ファイルなので GitHub に置いてチームで管理するのも容易です。

現在 1,000サーバほどマクロ化して管理していますが、さすがに数が多いので、情報の正確性の維持、変更反映の即時性、棚卸しの省力化などの管理面に課題を感じています…。

SCP

ちょっとしたファイルの転送に使える簡易SCP機能が付属しているので、いちいち SCPクライアントを起動する手間を省けます。

アップロード (手元 » サーバ)

ドラッグ&ドロップでいけます。

アップロードしたいファイルを Tera Term にドラッグ&ドロップすると、ダイアログボックスが出てくるので、送信先を指定して SCP でアップロードできます。

ダウンロード (手元 « サーバ)

サーバから手元にダウンロードしたいときは、[ファイル] » [SSH SCP] を選択して、

[Receive] でダウンロードできます。

ログ保存

サーバ上でのコマンドの実行履歴をログ・ファイルとしてローカルに自動保存できます。

作業チケットや Wiki に記録を残すときに重宝します。

保存を開始するには、[ファイル] » [ログ] を選択します。

[タイムスタンプ] にチェックを入れればタイムスタンプも付与されます。
タイムスタンプを付けない理由も特にないと思いますので、常にチェックを入れておくとよいでしょう。

ログ・ファイルの中身を確認してみると… コマンドの先頭文字が重複していたり (echoeecho に…) ゴミや空行が挿入されていたり (このマシンは zsh なので、そのせいな気がする) しますが、実行したコマンドとその出力結果は無事に記録されています。

コピペ事故防止

ターミナルの操作ミスで多いのは、意図しない貼り付けでしょう。

クイックガードでは Tera Term を以下のように設定して貼り付けミスを防いでいます。

まず [設定] » [その他の設定] » [コピーと貼り付け] タブを開きます。

続いて、

  • [右クリックでの貼り付けを確認する]
  • [危険なクリップボードの貼り付けを確認する]

にチェックを入れます。

右クリックで貼り付けた際に確認を求める

重要なサーバ上で作業しているとき、思いがけず右クリックしてしまってクリップボードの中身が貼り付けられるとドキッとしますよね。

[右クリックでの貼り付けを確認する] を有効にすると、貼り付け確認のダイアログが表示されるようになるので安心です。

(↓ 右クリックするとダイアログが出る)

要注意文字を貼り付けた際に確認を求める

通常、複数行の文字列 (= 改行が含まれる文字列) をターミナルに貼り付けると、貼り付けと同時に 1行ずつコマンドとして実行されてしまいますが、「勝手に実行されたくない。コマンドを目視で確認してから実行したい」という場合がほとんどだと思います。

[危険なクリップボードの貼り付けを確認する] を有効にすると、複数行を貼り付けた際に確認ダイアログが出てくるようになります。

(↓ "aaa\nbbb" を貼り付けようとしたところ)

内容を確認してからコマンド投入できるので安心ですね。

また、以下のような危険ワードを列挙したファイルを作って [キーワードファイル] に設定すればさらに安心です。

reboot
shutdown
halt
poweroff
service
systemctl
rm -r
rm -f

シリアル接続

MSP であるクイックガードでは、たまにレトロなネットワーク機器の管理をご依頼いただくことがあります。

最近では Web UI でセットアップできるネットワーク機器も一般的になってきていますが、ご依頼いただくような古いネットワーク機器は昔ながらのシリアルポート (RS-232 の D-sub 9ピン というやつ) で繋ぐ必要があります。

この接続に Tera Term が使えます。

接続方法も簡単で、ケーブルで繋いで Tera Term から新規接続を張るだけなのですが、最近の PC には COMポートがないので、とりあえずUSB変換ケーブルを用意しましょう。
(こういうやつ)

PC とネットワーク機器をケーブルで繋いだら、Tera Term の新規接続ダイアログで [シリアル] を選択し、利用する COMポートを指定します。

(↓ 手元の適当な L3スイッチに接続してみたところ)

SSH でサーバに繋ぐのと同じような感触で、コマンドを叩いて機器を制御できます。

オシャレにしてみる

Tera Term はデフォルトだと見た目がとてもダサいです。

ただダサいだけでなく視認性も悪いので、ミスの誘発&疲労の蓄積に繋がりかねません。

プロの道具として、これはよくないです。
事故が起きづらく作業効率の高い道具を選ぶこともプロの仕事の内なのですから。

そこで、本気でオシャレに&視認性を良くしてみたらどうなるか試してみました。

やったこと

具体的な手順は割愛しますが、以下をやってみました。

1. フォントを変えた

プログラミング用のフォントである Consolas に変えました。

また、単純に Consolas に変えるだけだと日本語を表示できないので、FontLink でメイリオにフォールバックするようにしました。

2. 壁紙

壁紙を貼ってみました。

今回は Microsoft が配布している壁紙 の中から 「Zune のゾディアック、巳」というハイセンスな 1枚を使ってみました。

3. 透過

スケスケにしてセクシーさを演出してみました。

4. カーソル

オシャレというより個人の好みなのですが、カーソルをボックスから垂直線に変えました。

5. シェル

これは Tera Term とは関係ありませんが、シェルの見た目をいじりました。
プロンプトとか色設定とか。

結果

それなりにオシャレになって、視認性も向上しました。
プロの業務にも耐えられそうです。

取り扱える文字に注意

Tera Term は内部実装が Unicode に対応していないようです。

https://ttssh2.osdn.jp/manual/4/ja/usage/unicode.html

現状のTera Termは内部設計がUnicode対応になっておらず、 以下に示すように文字コードは二段変換になっています。

UTF-8 <-----> Unicode(UTF-16LE) <-----> MBCS
        (1)                       (2)
(1)において、4.102から 4byte UTF-8 に対応したため、UTF-8のデコード時に Unicode の情報が欠落することはなくなりました。
漢字コード(受信) に UTF-8m が選択されていると結合文字(combining character)の処理が一部が行われます。Mac OS X(HFS+)を考慮したものとなっ ています。
(2)において、UnicodeとMBCS(Multiple Byte Character Set)の相互変換を行うために、 ロケール(言語指定)を正しく設定する必要があります。

とのことなので、MBCS (よく知らないが Shift_JIS?) にマッピング可能な文字しか使えないようです。

特に Unicode を多用する最近の Web開発用途には適さないので、クイックガードではあくまで入門用と割り切って利用することにしています。

まとめ

以上、クイックガードにおける Tera Term の位置付けと、Tera Term をどう活用しているのかを解説しました。

  • マクロ
  • SCP
  • ログ保存
  • コピペ事故防止
  • シリアル接続

新人にはまずはこれらの機能を活用して、Tera Term で安全にターミナル操作の経験を積んでもらっています。

また、業務の質を高めるために、Tera Term の外観を調整して視認性の向上を試みてみました。
一部の文字の取り扱いに難がありますが、入門用として使う分にはそこまで不都合ではなさそうです。

この記事が新人エンジニアの皆様のご参考になれば幸いです。
今後ともよろしくお願い申し上げます。