設定バックアップ(3)

さて、昨日の続きになります。
というか漏れていました。
アライドのスイッチを多種導入しているのですが、中にGS908SSという機種がありました。
該当ユーザでは後から追加したものだと思うのですが、こちらにはTFTPでアップロード、ダウンロードするコマンドが
ありませんでした。
何か無いかとマニュアルを読んでみたところ、FTPコマンドでの退避・復元が可能という記述を見つけました。
他のメーカーでもたまにこういう事があります。

さて、FTPとなると少々状況が変わってきます。どう変わるのかというと、まず、キックの方向が逆になります。
設定情報の退避・復元の遣り取りはスイッチングハブ~端末の遣り取りです。
TCP/IP通信ではざっくり言うとクライアント(依頼者)サーバ(供給者)システムという関係になっています。
サーバプログラムをスイッチ側に持たせると余計な機能を実装しなければいけないのと、処理が遅くなるなどの
観点からスイッチ側をクライアントとする。そうすると端末側にサーバを建てないといけないが、端末はそもそも
クライアント用の作りなのでサーバ向きではないのです。なので簡易的なサーバシステムとしてTFTPサーバを
建てるという図式ができていました。
ただ、スイッチ・ルータなどのネットワーク機器も複雑化し、サーバ機能を持たせるようになり出した昨今では、
FTPサーバをスイッチに実装させるのぐらい訳ないようになってきました。ほんとこの業界は日進月歩ですね。

それで、スイッチ側がFTPサーバとして待ち受けてくれます。端末側が標準コマンドのftpコマンドで実行できるので
端末側は楽になります。ftpコマンドをバッチ化すれば簡単と思いきや、、やや、バッチが止まる。
なるほど、telnetと同様、コマンドはDOS何だけどセッションは別なんですね。FTPに入った後の認証ユーザ名、
パスワード、ls,get,putのコマンドを渡せない。
じゃあ、TeraTermみたいにクライアントソフトで動作させる必要があるのか?
ググって見ると、皆さんよくご存知で。「ftp -s:」外部ファイル(コマンドファイル)に渡して実行可能なのですね。

では、さっくりやっていきましょう。
まずは、バッチファイル
get-config(gs908ss).bat
——————————————–

@echo off
pushd %~dp0
mkdir tmp
cd tmp
ftp -s:..ftpcmd.txt>>ftp.log
cd ..
set DAY=%date:~-10,4%%date:~-5,2%%date:~-2,2%
ren tmp %DAY%
rmdir tmp
——————————————–
すみません。まず最初に
今回、昨日のバッチと分けて作っているのには該当ユーザに理由があってそうしています。
ここの場合はWAN経由でセンター側から拠点設置のスイッチの設定を一斉に取り込むんですが、間に別業者が設置
しているファイアウォールがありまして、そこでFTPが遮断されていました。
だから、このバッチは別の場所で実行して、後は手動でマージする運用にしました。色々考えましたが、もうそれでも
いいかなと判断しました。
では説明
@echo offは省略
pushd %~dp0
mkdir tmp
cd tmp
全部省略
ftp -s:..ftpcmd.txt>>ftp.logでFTPを実行します。一行上でカレントディレクトリからtmpフォルダに移動している
のでコマンドファイルであるftpcmd.txtは一つ上の階層に存在する状態になります。
なので..を付けています。
その後ろの>>はリダイレクトコマンドで、その後の表示結果をftp.logというログファイルに残します。
このログファイルはtmpフォルダ内に生成しています。最初のカレントディレクトリに残したかったら同じく前に
..を付けます。
コマンドファイルを実行したら
cd ..でカレントディレクトリを1階層上に移動します。元のバッチファイルがあるフォルダですね。
set DAY=%date:~-10,4%%date:~-5,2%%date:~-2,2%も省略
ren tmp %DAY%
rmdir tmp
も省略です。
どうでしょう?簡単かな。

次はコマンドファイル
ftpcmd.txt

——————————————–

open xxx.yyy.zzz.153
manager
pppppppp
get startup.cfg AAAAA.cfg
disconnect

open xxx.yyy.zzz.154
manager
pppppppp
get startup.cfg BBBBB.cfg
disconnect

open xxx.yyy.aaa.153
manager
pppppppp
get startup.cfg CCCCC.cfg
disconnect

open xxx.yyy.zzz.152
manager
pppppppp
get startup.cfg DDDDD.cfg
disconnect

bye

——————————————–
GS908SSは4台だけだったのでループ処理ではなくベタ打ちしました。
open xxx.yyy.zzz.153でログイン
managerは認証でユーザ名入力
ppppppppは認証でパスワード入力
get startup.cfg AAAAA.cfgはFTPのGETコマンド。元のstartup.cfgをホスト名.cfgにリネームして退避
disconnectでFTPセッションを抜ける
あとは繰り返しです。

もっと改善の余地はありますが、急遽作ったのでOKかな。
ではでは。


 ホーム日常 未分類