複数Linuxサーバーの設定差分を効率的に確認する方法

Linux

概要

複数サーバーの設定差分を確認したいとき、

  • 手作業で1台ずつ確認する
  • scpでファイルを集める
  • フォーマットを揃える

といった作業は手間がかかります。

しかし、TeraTermのログ機能とマクロ機能を使うと
比較用のファイルが自然に揃う状態を作ることができます。


ログ設定

この方法は、TeraTermのログ設定が前提になります。
TeraTermの設定→その他の設定→ログで、標準ログファイル名にホスト名やIPアドレスを付けるように設定します。
また、同じタブの「自動的にログ採取を開始する」も有効にしておきます。

例:

%a.log

または:

%h_%Y%m%d_%H%M%S.log

この設定にしておくことで、
接続したサーバーごとに、ログファイルがホスト名付きで自動的に分割されて出力されます。


マクロの準備

次に、TeraTermのマクロを作成します。
以下をテキストエディタで書いて、適当な名称で保存します。
拡張子は.ttlにしてください。
実行するコマンドは確認したい内容に応じて変更します。

sendln 'cat /etc/ssh/sshd_config'  
sendln 'exit'

実行方法

準備ができたら、あとは同じ操作を各サーバーで繰り返すだけです。

やることはシンプルで、
TeraTermで処理を行いたいサーバーに接続します。
root権限が必要ならsuしてください。

それから、Teratermのメニューでコントロール→マクロを選択して、先ほど保存したマクロファイルを選択します。

選択すると、すぐにマクロが実行され、接続が終了します。
catの結果がそのままログに出力され、このサーバーのログが作成されます。

あとは確認したいサーバー全てに対して、次の操作を繰り返します。

①ログイン
②マクロ実行

例えば3台あれば、それぞれに接続して同じマクロを実行すると、

192.168.1.10.log
192.168.1.11.log
192.168.1.12.log

のように、サーバーごとのログファイルが揃います。

これらのログはすべて同じフォーマットで出力されるため、
そのままWinMergeなどで比較できます。

どの設定が違うのかが一目で分かるようになります。


ログイン処理を自動化する

サーバー台数が多い場合は、 1台ずつログインしてマクロを実行するのも負担になります。

その場合は、ログイン処理もTeratermのマクロ化して、BAT等で呼び出しをまとめることで、一括処理ができるようになります。

  • 接続
  • マクロ実行
  • 切断

をサーバーごとに繰り返すことで、
ログファイルが自動的に揃います。

実際の処理用のマクロは1つ用意するだけで済むため、
作業がシンプルになります。


実際の処理サンプル

Teratermによるログイン処理の自動化は、以下の記事で説明しています。
興味のある方はご覧ください。

https://infratechnote.com/teraterm-macro/

TeratermによるLinuxの自動操作例は、以下の記事にまとめています。