ルーターをPythonで操作する

どうも、Ryu Seinoです。
久しぶりの投稿です。
どんな感じで書いてたかな……感覚が思い出せませんね!w

今回はインフラ自動化の話でもしようと思います。
サーバーのプロビジョニングをコードで行うというのは一般的ですが、私が以前にインフラをやっていた時はルーターに関してはテキストエディタにコマンドを書いておいて、それをコピペしたり、手でコマンドを打っている人が多かったです。
なんちゃってエンジニアの私はその辺りをPerlで自動化したりしていました。
しかし、Perlは直ぐに自分の書いたコードも読めなくなるのでいつからかPythonに変えたのでした。

前置きが長くなりましたが、今回はCiscoに対してtelnetしてコマンド実行してみます。
サンプルなのでハードコーディングになっていたりしますが、真価を発揮するのは外部のファイルを使った時でしょう。
何台ものルーターの自動設定が行えます。
もちろん、文字列置換などを行えばパラメータを個別に出来ますし、複雑な処理も出来ます。
ステータスやコンフィグの取得などもあっという間です。
また、実際に使う時はエラー処理やログの出力なんかも考慮した方がいいですね。
ああ、あと関数だとかクラスだとかにした方が後々いいかも知れないね。
でも仕組み自体は単純なので上から下にダラーって書いたままでもいいかも知れないね。
そこらへんは各自で考えましょう。

まず最初に今の状態

今回は単純にインターフェースのshutdownを行います。
なので今の状態をまず出力しておきます。

GC-Router#show ip interface brief | include FastEthernet0 
FastEthernet0              unassigned      YES unset  up                    down    
GC-Router#

Statusはupになっています。
これをスクリプトでshutdownします。

スクリプトサンプル

コードにコメントを入れたので動作はわかると思います。

実行して結果をみてみる

まずこのスクリプトを実行。
そして結果を確認してみます。

GC-Router#show ip interface brief | include FastEthernet0 
FastEthernet0              unassigned      YES unset  administratively down down    
GC-Router#

ちゃんとadmin downになってくれました。

他のプロトコルの場合は?

今回は昔ながらのtelnetでしたが、当然ながらsshはsshのモジュールを使えば対応できます。
Webブラウザでしか設定できないよーというタイプのルーターは?
その場合はRequestsとBeautiful Soupあたりで対応できます。

終わりに

人間の手作業はミスの可能性があります。
そのようなことが起こらない為にも、事前にスクリプトを作っておいて本番はそれに任せるというのは有効です。
また、スキルが足りない人でも作業をこなせるというメリットもあります。
何より手でやっていたら一晩かかっても終わらないような作業も直ぐに終わらせることが出来ます。
メリットしかないので、ルーターに限らず日頃の作業で繰り返しが発生していた場合は、上手くスクリプトを使ってコスト削減して正確な作業をしていきましょう。

About the author

Ryu Seino
Ryu Seino

2015年入社。
コンシューマー向けWebサービス、商社の基幹システムなどを担当した後、2016年の途中から管理部システム課に所属となる(ちなみに一人しかいない)。
好きな動物はペンギン🐧
都内にて一人飲酒業務に精を出していたが、諸事情により活動休止。
最近の趣味としては銭湯(含スーパー銭湯)に行く事と水族館に行く事。

Add Comment

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Ryu Seino By Ryu Seino

最近の投稿

アーカイブ

カテゴリー

タグクラウド

コーポレートサイト

メタ情報