十四回目の投稿です。今回の内容は、著名なsshクライアントソフトの一つである「Tera Term」の
ブロードキャストコマンドという便利な機能に関するものです。サーバの構築や設定をしていると、
すべてのサーバに対して同一のアカウント/ディレクトリを作成するといった、共通のコマンドを
実行するような機会は多々あります。対象のサーバの台数が少なければ大した負担にはなりませんが、
台数が10台ともなるとやや面倒です。このようなとき今回紹介するブロードキャストコマンド機能を
用いれば、複数のサーバに同一のコマンドを一斉送信することができるため、作業負荷の軽減が
見込めます。本投稿では、当該機能の概要ならびに利用が検討できる場面について説明します。
◆ Tera Termの概要
説明するまでもないですが、Tera TermはWindowsにおける代表的なsshクライアントソフトの一つ
です。サーバへのssh接続や、スイッチ類のコンソールへのシリアル接続で利用したことがある方も
多いと思います。オープンソースソフトウェアとして開発が続けられており、直近でもメジャー
アップデート版がリリースされています。実行ファイルは、窓の杜(参考1)やプロジェクトの
GitHubページ(参考2)から入手できます。
※ 最新バージョンの実行ファイルは現時点でGitHuibページから入手可能
◆ ブロードキャストコマンド機能の概要
Tera Termのブロードキャストコマンド機能について説明します。この機能を使えば、ssh接続を
介して複数のサーバに同一のコマンドを送信できます。実際の操作画面キャプチャにて、その機能を
確認してみます。なお、対象のサーバは2台のFedora 36で、クライアントはWindows 10とします。
【手順】
[1] 対象サーバにおけるsshdの設定
サーバ側でsshdを起動していない場合は、当然ですがクライアント側からssh接続できません。
2台のサーバにて、sshdが起動していない場合は起動しておきます。また、必要に応じてファイア
ウォールや使用ポートなどの設定を見直してください。
$ sudo -s
# systemctl status sshd
# systemctl start sshd
# systemctl status sshd
[2] 1台目の対象サーバへのssh接続
クライアントからTera Termのセッションを起動し、1台目のサーバに接続します。 以下の項目を
指定し、「OK」をクリックします。
・ホスト(T):1台目の対象サーバのIPアドレス
・サービス:SSH
・TCPポート#(P):22(使用ポートを[1]で変更している場合はそのポートを指定)
「セキュリティ警告」のポップアップが表示された場合は、そのまま「続行」をクリックします。
ssh接続を行うユーザの指定が求められます。対象サーバにはssh接続が許可されたユーザ
「parallels」が存在しており、今回はこのユーザを指定することとします。ユーザ名とその
ユーザのパスワードを入力し、「OK」をクリックします。
次のようなコンソール画面が表示され、サーバにssh接続できたことが分かります。
[3] 2台目の対象サーバへのssh接続
2台目のサーバに接続します。クライアントから新しくTera Termのセッションを起動し、[2]と
同様の手順を実施します。
[4] ブロードキャストコマンド機能の使用
2つのTera Termセッションのウィンドウのうち、どちらか一つのウィンドウ上部にある
「コントロール」から、「ブロードキャストコマンド(B)」をクリックします。
新しくウィンドウが表示されます。「リアルタイム」欄のチェックを外し、その下に表示されて
いる2つのプロセスを選択します(この2つのプロセスこそ、[2]と [3]で起動したセッションです)。
ウィンドウ上部の入力欄に任意のコマンド(ここではls)を入力して「送信」ボタンをクリック
すると、2つのプロセスにてコマンドが同時に実行されることが確認できます。
簡単ではありますが、2台のサーバに対して同一のコマンドを送信することを確認しました。
ただ、これだけではあまりに単純であるため、もう少し実用的な例を次節にて紹介します。
◆ ブロードキャストコマンド機能の使用例
本節では、ブロードキャストコマンド機能が活用できる場面を紹介します。前節のように、
クライアントとしてWindows 10がある状況で、2台のサーバFedora 36から構成されるネット
ワークに対してサーバを1台追加することを考えてみます。
【作業概要】
サーバ追加に伴い、既存の2台のサーバFedora 36における/etc/hostsに、新しいサーバのIP
アドレスとホスト名を追記することになった。追記する内容は同一であるため、Tera Termの
ブロードキャストコマンド機能が利用できる。
【手順】
上述の作業を、ブロードキャストコマンド機能を用いて実施します。なお、前節ではコマンドの
入力欄にコマンドを入力して送信(非リアルタイム)していましたが、本節ではコマンドをリアル
タイムで送信する方法にて対応してみます。
[1] 準備
2台のFedora 36へのssh接続を行い、ブロードキャストコマンド機能を起動します。このとき、
「リアルタイム」にチェックを入れておきます。
[2] コマンド送信(rootシェルの起動)
/etc/hostsを編集するにはroot権限が必要です。コマンドの入力欄をクリックした状態で
「sudo -s」と入力し、Enterキーを押下します。コマンドの入力欄に 「sudo -s」は表示され
ませんが、2つのTera Termセッションを確認してみると、 「sudo -s」の入力が送信され、
parallelsのパスワードの入力が求められていることが分かります。
コマンドの入力欄をクリックした状態で、parallelsのパスワードを入力して再度Enterキーを
押下すると、2つのセッションにてrootシェルが起動します。
※ サーバごとにparalleslのパスワードが異なる場合は、各セッションをクリックし、
各セッションごとにパスワードを入力してください
[3] コマンド送信(viエディタ)
「vi /etc/hosts」を入力してエンターキーを押下すると、hostsファイルが開きます。
引き続きコマンドの入力欄をクリックした状態で、「G」、「o」と続けて入力すると、ファイル
末尾の下の行にカーソルが移動し、INSERTモードになったことが確認できます (詳細については
viのコマンドモードにおけるコマンドを参照してください)。
ファイルの編集ができるため、新しいサーバのIPアドレスとホスト名を追記します。
入力が終われば、「Esc」キーを押下してviのコマンドモードに戻り、「:wq」と入力してEnter
キーを押下します。
viが終了し、通常のプロンプトに戻ります。catなどで編集内容を確認すると、正しく編集された
ことが分かります。
実用的な例の一つとして、hostsファイルの一斉編集を考えてみました。この他にも、同じcronを
複数のサーバに設定したい場合などでも利用できるかと思います。
◆ 感想など
これまでにTera Termを使う機会は何度もありましたが、ブロードキャストコマンド機能については
使ったことがありませんでした(知りませんでした)。使い慣れていると感じるユーティリティに
ついても、改めてそのオプションや機能を確認してみると、知らなかったり便利だと感じたりする
ものを発見できるかもしれません。
◆ 参考
・【参考1】https://forest.watch.impress.co.jp/library/software/utf8teraterm/
・【参考2】https://github.com/TeraTermProject/osdn-download/releases
以上です。