ネットワーク上の大量のスイッチやルータのコンフィグ取得を自動化する方法

マクロ

ネットワーク上のスイッチやルータのコンフィグ取得について

ネットワークの保守運用業務では、ネットワーク上で稼働しているスイッチやルータ等について、機器故障に備えてコンフィグのバックアップを取得することがあります。設定変更が頻繁に発生する場合は、定期的にバックアップする場合もあります。

スイッチやルータのコンフィグバックアップの方法としては、管理用端末から Tera Term を使用して対象機器にSSH接続した上でコマンドを実行するという方法が一般的かと思います。

バックアップを取得する対象機器が数台であれば手作業でバックアップを実施してもそれほど時間はかかりませんが、対象台数が数百台単位となってくると手作業ではかなり時間がかかってしまいます。

ネットワーク構成のイメージ(黄色背景:コンフィグバックアップ対象)

私が担当していたネットワークでは、対象機器が数百台あったため Tera Term のマクロを作成して対応しようと考えましたが、SSHのバージョンや認証用のIDパスが機器ごとにばらばらだったので、Tera Term のマクロでは簡単には対応できそうにありませんでした。

そこで、私がとった方法はエクセルのマクロを活用した方法でした。今回はこの方法について説明しようと思います。

大量のスイッチやルータのコンフィグ取得を自動化する方法について

コンフィグ取得を自動化する方法として、エクセルのマクロを活用しているのですが、今回は考え方だけを説明して、どのようなコードを書くかは説明しません。コードの書き方は人それぞれの書き方があるのと、コードの書き方を説明しているサイトはたくさんあるためです。

対象ネットワークについて

まず、私が担当していたネットワークについてですが以下のような状況でした。

  • コンフィグ取得対象のスイッチやルータの台数は数百台単位
  • すべての対象機器へは管理用端末から接続が可能
  • スイッチやルータはSSHバージョンや認証用のIDパスが機器ごとにばらばら

このようなネットワークについて、全スイッチおよびルータのコンフィグを取得する必要があったということになります。

コンフィグ取得の自動化にエクセルのマクロを活用

最初はTera TermのマクロでSSHバージョンに基づいて場合分けするコードを作成しようとしたのですが、想定通りに動かず、最終的にはエクセルのマクロを活用することにしました。

作成したマクロの概要は以下の通りです。

  • エクセルシートにスイッチおよびルータのSSHバージョン、ログインID、実行コマンドグループを記載した機器リストを作成
  • エクセルのマクロを実行すると、シートに入力した情報に基づいて各スイッチおよびルータ毎にTera Termのマクロを出力(1機器につき1つのTera Termマクロを出力)
  • Tera Termマクロの内容は、対象機器へログイン、コマンド実行、ログアウトを実行
  • 出力したTera Termのマクロすべてを順に実行するバッチファイルを作成
  • 作成されたバッチファイルを実行すると、Tera Termマクロがすべて順に実行される
  • バッチファイル実行後は、すべてのTera Termマクロの実行が完了するまで待っているだけでOK

エクセルのシートの表の書き方について

エクセルのシートについては、以下のようなフォーマットで記載しておけば良いでしょう。

機器リストの例
  • 通信先ホスト名/IP → Tera Termで接続する際に指定するホスト名に該当する情報
  • SSHver → 接続対象機器が対応しているSSHのバージョン(1 or 2)
  • ID → SSH接続時の認証情報のユーザ名に該当する情報
  • パス →  SSH接続時の認証情報のパスフレーズに該当する情報
  • コマンドGrp → その機器で実行したいコマンドリストのグループ番号

実行させたいコマンドリストの指定方法について

実行させたいコマンドリストについては、機器リストのシートとは別にコマンドリストを入力したシートを任意の数作成しておきます。作成したコマンドリストを入力したシートは、番号で識別できるようなシート名にしておきます。例えば、com1,com2,com3,…などです。

機器リストのシートにて、コマンドGrpの欄にコマンドリストに対応した番号を入力すれば、各機器と実行したいコマンドリストを対応付けることができます。

エクセルマクロの処理内容について

ここまで準備ができたら、あとはエクセルのマクロでどのような処理をさせるかですが、以下の様な手順を実行するコードを書けばOKです。

  1. 機器リストの情報を1行ずつ読み込む
  2. 読み込んだ情報をもとにTera Termマクロ(テキスト形式ファイル)を出力する
    • Tera Termマクロの内容は、対象機器へログイン、コマンド実行、ログアウトを実行
  3. 機器リストの次の行に進む
  4. 1.~3.の手順を機器リストに記載がある行数分だけ繰り返す
  5. 出力したTera Termマクロをすべて順に実行するバッチファイル (テキスト形式ファイル)を出力する
    • バッチファイルの内容はTera Termマクロのファイル名を列挙するだけ
  6. 終了

コードの書き方はいろいろあると思うので、自分の好きなように書いてください。ポイントとしては、機器リストに記載されている機器が追加や削除されても、またコマンドリストシートに記載されているコマンドが追加や削除されても、コードを修正する必要が無いようなコードを書いてください。

今回紹介した方法のメリットとデメリット

今回紹介した方法のメリットとしては以下があります。

  • 機器のSSHバージョンや認証情報が変更になっても、機器リストの入力情報を修正するだけで対応できる
  • 機器リストの行追加削除により対象機器の追加削除が自由にできる
  • コマンドリストシートの内容変更により実行させるコマンドリストが変更が自由にできる

一方でデメリットとしては以下があります。

  • Tera Termで初めて接続する機器については、セキュリティ警告の画面が出るため、その画面を消すために手動で操作しなければならない
  • バッチファイル実行後は、Tera Termマクロが実行されるたびにウインドウのアクティブが奪われるため、バッチファイル実行完了までは同端末での作業が困難になる

おわりに

ネットワーク保守運用業務において、マクロが活用できる場面は意外とあったりします。

マクロをマスターして業務の効率化を目指してみてください。

タイトルとURLをコピーしました