February 2018

[Python] pexpectを改めて勉強してみる

RTXのコンフィグもバックアップを取りたい 現在、Netmikoを使ったPythonコードで以下の機器の設定を定期的にバックアップしています。 コアL3スイッチ(Cisco) IHANet用ルーター(Cisco) 外接L3スイッチ(H3C) コアL2スイッチ(Juniper) で、これに加えて前々からバックアップを取りたかったのがYAMAHAのVPNルータ。 自宅と災対拠点にそれぞれ1台ずついます。 NetmikoやNAPALMでは対応しておらず、取れうる手段としては以下のものが考えられました。 AnsibleのRAWモジュールでコマンドを実行して取得 Python+pexpectでコマンドを実行して取得 当初、前者のAnsibleパターンを狙い、プレイブックを作成して動かしてみたのですが、なんとまぁYAMAHA RTXのSSHって、exec(sshコマンドでコマンド実行をさせるもの)がサポートされてないんですね。こんなメッセージが出力されてしまいました。 Received disconnect from XXX.XXX.XXX.XXX : 2: Channel request ‘exec’ is not supported. そこで、後者のパターンでコンフィグ取得処理を書くことになりました。 かなり力技なので、コードを公開する気はないんですが、この時を通じて久々にPython触ったのと、pexpectちゃんと調べたのと、それを忘れないようにするために記事としてUPしました。