RANCIDのlogin機能を利用してFTFTPサーバへconfigファイルをアップロードするツールを作成してみました。
「clogin」コマンドを利用したシェルスクリプトをそれぞれのNW機器で作成したのでメモしていきます。
まずは、事前にコンフィグをバックアップしたいホスト名または、IPアドレスを用意します。
このファイルはそれぞれのベンダー機器ごとに作成します。
#vim test.txt test 192.168.1.1
各ベンダー機器のシェルスクリプトを作成していこう
今回は「/var/rancid/tftp」配下にファイルをそれぞれ作成します。
# ll 合計 44 -rw-rw-r-- 1 rancid rancid 48 11月 12 13:35 2014 ADX.txt -rw-rw-r-- 1 rancid rancid 64 11月 12 19:41 2014 F5_tmsh.txt -rw-rw-r-- 1 rancid rancid 32 11月 12 13:48 2014 H3C.txt -rw-r--r-- 1 rancid rancid 240 11月 12 19:46 2014 cisco.txt -rw-rw-r-- 1 rancid rancid 36 11月 12 13:24 2014 netscreen.txt -rwxrw-rw- 1 rancid rancid 268 11月 12 19:44 2014 adx.sh -rwxrw-rw- 1 rancid rancid 718 11月 12 19:43 2014 cisco.sh -rwxrw-rw- 1 rancid rancid 323 11月 13 12:43 2014 f5.sh -rwxrw-rw- 1 rancid rancid 251 11月 12 19:44 2014 h3c.sh -rwxrw-rw- 1 rancid rancid 305 11月 12 19:44 2014 netscreen.sh
上記のような感じでそれぞれの機器を登録したテキストファイルと、これから作成するシェルファイルを作成します。
各ベンダー機器のシェルスクリプトを作成する理由はそれぞれ、コマンドが違うのでってことだけです。
一つのシェルファイルでもいいのですが、今回はcronで時間別で回すことと見やすさという前提条件で作成しました。
それでは、次からそれぞれのスクリプトの作成例です。
cisco
#!/bin/bash # Cisco機器のコンフィグをtftpサーバへコピーする #cisco.txtを変数ciscoへ代入 for cisco in `cat /var/rancid/tftp/cisco.txt` do #cisco.txtからホスト名を読み込みコンフィグを取得 /usr/local/rancid/bin/clogin -t 300 -c "copy running-config tftp\n1.1.1.1\n$cisco-config\n\n" $cisco done
netscreen
#!/bin/bash #netscreen.txtを変数netscreenへ代入 for netscreen in `cat /var/rancid/tftp/netscreen.txt` do #netscreen.txtからホスト名を読み込みコンフィグを取得 /usr/local/rancid/bin/nlogin -t 300 -c "save config to tftp 1.1.1.1 $netscreen-config\n\n" $netscreen done
F5
tftp-f5.sh #!/bin/bash #F5.txtを変数H3Cへ代入 for F5 in `cat /var/rancid/tftp/F5_tmsh.txt` do #F5.txtからホスト名を読み込みコンフィグを取得 /usr/local/rancid/bin/clogin -t 300 -c "cd /var/local/ucs/\ntmsh\nsave sys ucs $F5-config\ny\nquit\n\ntftp 1.1.1.1\nput\n$F5-config.ucs\nquit\n" $F5 done
H3C
vim h3c.sh #!/bin/bash #H3C.txtを変数H3Cへ代入 for H3C in `cat /var/rancid/tftp/H3C.txt` do #H3c.txtからホスト名を読み込みコンフィグを取得 /usr/local/rancid/bin/h3clogin -t 300 -c "tftp 1.1.1.1 put $H3C.cfg\n\n" $H3C done
ADX
#!/bin/bash #ADX.txtを変数ADXへ代入 for ADX in `cat /var/rancid/tftp/ADX.txt` do #ADX.txtからホスト名を読み込みコンフィグを取得 /usr/local/rancid/bin/clogin -t 300 -c "copy running-config tftp 1.1.1.1 $ADX-config\n\n" $ADX done
こんな感じで作成したんですが、もっとうまいスクリプト作成できる方、教えて下さい!
以上です。
サーバーを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す