Ciscoルータのコンフィグを、Excelマクロで何とかしたい。

”!” で段落を区切られ、ツリー構成で書かれているCiscoのルータコンフィグ。

今回は、特定のユニークな番号が6桁(親番号4桁+子番号2桁)の親番号から、
親番号4桁で、どこにvlan設定やvrf設定が引っかかっているのかを抽出したいと思います。

まず頭から、初めての文字が登場するまでの ”半角スペース” を変換する

まずは、目視では1文字目に書かれた半角スペースを見落としがちなので、
それを特定の見易い文字(今回は「●」)に変換する所から始めて行きたいと思います。


set ip next-hop 192.168.100.254
↑例えば、半角スペースの変換を、

●●set●ip●next-hop●192.168.100.254
↑こうならない様に、していきます。

●●set ip next-hop 192.168.100.254
↑このように変換できるようにマクロを組んで行きたいと思います。

以下のコードを入力する事で実現できます。
実行環境としては、Ciscoのコンフィグ設定のテキストコードを全て選択し、
Excelの特定列に張り付けた時に動作します。(張り付けたシートがアクティブな場合です)
 張り付ける列の特定はありません。A列でも、C列でも、同様に動作します。

※モジュールを跨いで使いたい場合や、マクロ一覧に表示させたい場合は、
 Private Sub を、Subに変更します。
※●以外の文字に置き換えたい人は、leadingSpaces = leadingSpaces & “●” の、
  “●”の中身を、置換変えたい文字列に書き換えてください。

Private Sub 先頭の空白のみ、置き換え文字に変換()

Dim originalText As String
Dim leadingSpaces As String
Dim restText As String
Dim z As Long
Dim ws As Worksheet


Set ws = ActiveWorkbook.ActiveSheet ' アクティブシートを対象

For Each cell In ws.UsedRange
    originalText = cell.Value
    leadingSpaces = ""
    z = 1

    ' 先頭の半角スペースをカウント
    Do While Mid(originalText, z, 1) = " "
        leadingSpaces = leadingSpaces & "●"
        z = z + 1
    Loop

    ' 残りのテキストを取得
    restText = Mid(originalText, z)

    ' セルに新しい値をセット
    cell.Value = leadingSpaces & restText
Next cell

End Sub


以下の内容に実行してみます。

!
policy-map QoS-POLICY-COMBINED
 class VOICE
  priority 1000
  set dscp ef
 class VIDEO
  bandwidth 5000
 class DEFAULT
  bandwidth 10000
!

結果は、こうなりました。

!
policy-map QoS-POLICY-COMBINED
●class VOICE
●●priority 1000
●●set dscp ef
●class VIDEO
●●bandwidth 5000
●class DEFAULT
●●bandwidth 10000
!

続きは少ししてから

コメント

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