カスタムデバイスプロファイル
単純なYAML定義を使用してカスタムプロファイルを作成でき、sshまたはtelnetを使用してコマンドを実行し、出力を処理できます。
NetCrunchコンフィグ管理エンジンは、 Oxidizedオープンソースプロジェクトに触発されており、同様の概念を使用して、セッションパラメータとコマンド出力の処理を記述しています。
ただし、重要な違いがあります。
- デバイスプロファイルを宣言型で記述するため、プログラミングの必要はありません
- 正規表現はJavascriptで処理されます
デバイスコンフィグプロファイルを説明するために必要な唯一の知識は、正規表現に関する十分な知識と理解です。
設定プロンプト
端末が次のコマンドを読み取る準備ができたときや前のコマンドの出力がいつ終了したかを認識するために、プロンプト形式が必要です。 1つまたは複数のプロンプト式を設定できます。
単一プロンプト
prompt: "/^(\r*[\w\s.@()/:-]+[#>]\s?)$/m"
複数プロンプト
prompt: - /^(?:\x1b[..h)?[\w.-]+# $/m - /^\w+@\w+([-.]\w+)*>((?.+)?\s)?/m
設定コメント
show versionなどのコマンド出力に追加されるコメントプレフィックスです。
comment: "# "
上記の場合、2文字のプロンプトプレフィックス# とシングルスペースを定義しました。
出力処理ブロック
各コマンドの後で、出力の処理方法を説明できます。
lines: range: 1..-1 reject: - /^\r$/ - /time/ comment:
上記の例では、エンジンは次のようになります:
- 最初と最後の行を削除します (
範囲: 1..-1) - からの行をスキップ(拒否)し、
timeフレーズを含みます - 全ての出力をコメントアウトします
全てのコマンドの処理
all: で始まり、全てのコマンドの処理ブロックを記述します。最初と最後の行を削除するのが一般的です。
all: lines: # always cut off first and last line range: 1..-1
シークレットの処理
コンフィグをそのままダウンロードすることも、パスワードやセキュリティキーなどのシークレットをテキストに置き換えることで削除することもできます。この処理は、特定のノードのデバイスコンフィグセンサーを構成するときのオプションの状態によって異なります。
secret: /^(create snmp community) \S+/gm: "$1 <removed>" /^(create snmp group) \S+/gm: "$1 <removed>"
実行するコマンドの定義
commands: ブロックに各コマンドを追加し、必要に応じて処理を記述します。
コマンド出力にコメント
commands: show inventory: comment:
処理ブロック付きコマンド
commands: show version: lines: reject: - /([Ss]ystem [Uu]p\s?[Tt]ime|[Uu]p\s?[Tt]ime is \d)/ comment:
フル出力の通常のコマンド
commands: "show running-config | nomore":
セッションとプロトコルの構成
構成ブロックはconfig:で始まります。次にブロックはそれが参照するプロトコルリストによって記述されます。
Telnet
デバイスにアクセスするためのオプションがあります。 ユーザー名とパスワードのプロンプトを検出するには、正規表現を設定する必要があります。
telnet: #set prompts for interactive telnet login login: username: /Username:/ password: /Password:/
SSH
SSH specific
ssh: #terminal options pty: charsWide: 1000
Execモード
コマンドは、対話型セッションまたはexecモードで実行できます。exec
モードを有効にするためには
ssh: exec: true
セッションの開始時と終了時に実行されるコマンド
ssh, telnet: # commands to be executed after login afterLogin: - "no page" # Commands to execute before logout beforeLogout: - logout y n
インタラクティブプロンプトの処理
多くのデバイスでは、ログイン後にコマンドを呼び出すか、コマンドにパイプを追加することでページングを無効にできますが、一部のデバイスにはこの機能がありません。 このような場合、端末の出力と通常1文字を送信する反応を監視するための正規表現を定義できます。
例
expect: /Press any key to continue(\x1b[\??\d+(;\d+)[A-Za-z])$/m: send: " " replace: ""
この場合、メッセージが表示された場合、プログラムは単一のスペースを送信してから、出力からプロンプトを削除します。