2016/11/090 Shares

設定バックアップ(2)

スイッチ設定バックアップ自動化の続きです。
まず、TFTPサーバをどうするかの話からになります。
多種多様ですが、色々な機能が付与されていてメジャーなのはTFTPD32でしょうね。
スタンダードエディションのほかにサービスエディションもありますし、v3.51から64ビット版に対応した
TFTPD64も整備されています。いいモノだとは思いますが不必要な機能もあるので個人的には使いません。
コレが好きです。インタフェースも設定も名前も単純です。小気味良いです。
さて、ターミナルは前回も説明しましたTeraTermのマクロを使いますのでこれはもう不動で行きます。
但し、今回は最低必要なファイルのみを設置します。
色々試して分かったのは最低はこの8ファイルが必要なようです。
TERATERM.INI
ttermpro.exe
ttpcmn.dll
ttpdlg.dll
ttpfile.dll
ttpmacro.exe
ttpset.dll
ttptek.dll

TFTPD側で必要なのは2ファイルだけです。
TFTPD.exe
TFTPD.ini
今回は.batファイル、マクロファイルも全部同じ場所に格納します。
実際の設定ファイルは子フォルダとして日付フォルダを作成してその中に格納します。
個人的に嫌いなのは絶対パスに縛られるのが嫌いなので、全部相対パスで作るのを目指しました。

それでは行ってみましょう・
①まず作業場所を決めます。私はD:にget-configというフォルダを作成してその中で完結します。
 その中にTeraTermの8ファイルを格納します。設定は何も変えずにOKです。
②次はTFTPDの2ファイルです。
 こちらはTFTPD.iniを設定変更します。
 2行目のAccessPathをtmpフォルダに指定します。
 このフォルダは後で作ります。
TFTPD.ini
——————————————–
[TFTPD]
AccessPath=.tmp
SubFolder=False
ReadAccess=True
WriteAccess=True
Timeout=5000
Retye=8

——————————————–
 ③次はTeraTermのマクロファイルを作成します。
  これは説明が必要なので先にファイルの内容を付けます。私はget-config.ttlというファイル名にしています。
get-config.ttl
——————————————–
;—-コマンド定義
SWIPAD = param2
SWNAME = param3
UPLOAD = “upload method=tftp server=10.32.1.66 file=startup.cfg destfile=”
;
;—-コマンド結合
strconcat SWIPAD ‘:23 /nossh /T=1’
;
;—-ログイン
connect SWIPAD
wait “Login:” “login:”
sendln “manager”
wait “Password:”
sendln “pppppppp”
;
;—-config収集
strconcat  UPLOAD SWNAME
strconcat  UPLOAD “.cfg”
sendln UPLOAD
;
;—-ログアウト
sendln “logout”
;

——————————————–
先に行っておきますとサンプルはアライドテレシスCentreCOM9424T/SP-EとGS924M,GS924MV2,GS916M,GS916MV2,GS908LLもだったかな?が対象です。
同様の機種でコマンドが似ているので一気にgetできます。その辺はカスタマイズしてください。
;はコメントです。
;—-コマンド定義
SWIPADはIPアドレスです。ログイン処理で代入します。param2は後で出てくるバッチファイルの2列目です。

SWNAMEはホスト名です。設定ファイルをこの名前に変えて管理します。param3は後で出てくるバッチファイルの
3列目です。
UPLOADはTFTPサーバに送るときのコマンドです。後で結合処理します。
;—-コマンド結合
strconcatがマクロコマンドです。SWIPADと’:23 /nossh /T=1’をくっつけます。ログインするのはIPアドレスを指定
するのですが、TeraTermはSSHにも対応しているので通信方法として「SSHは使わない。TCPの23番ポートを
使用します。」という宣言ですね。
strconcatは事前に変数と定数を結合するコマンドとしてよく使います。因みに結合した定義名は前部分の名称(この
場合だとSWIPADになります。)
;—-ログイン
connectでtelnet接続します。
接続に行くとuser名/パスワードで認証が必要です。waitで装置から送られるコマンドが来るまで待ちますが、ここで一つ注意点があります。
CentreCOM9424T/SP-Eの場合は”Login:”、GS9xxシリーズは”login:”と2通りあります。
その場合はスペースで空けて2通り並べておくとOR条件でどちらか来た時にwaitを解放、先に進みます。
managerはアライドのデフォルトユーザ名です。ここは変更指定ないので共通で。入力を送る場合にはsendlnです。
“Password:”は全ての機種統一なので一通りだけでOKです。
パスワードを送ります。PPPPPPPPはさすがにパスワードなので伏字で
;—-config収集
UPLOADコマンドの説明です。
methodはアップロード方式、ここではTFTPを指定します。serverはTFTPサーバのアドレス。つまりTFTPD.exeを動かすあなたのパソコンです。・・・因みに補足ですが、ネットワークは繋がっている前提です。
fileは送り元の定義ファイル名。この場合は全箇所統一してますので楽です。startup.cfgというファイルです。
destfileが送り先のファイル名です。無指定で送り元と同じファイルになりますが、そうすると全箇所共通なので上書きされてしまいます。一箇所一箇所変えるためにユニークな変数であるホスト名に変えます。それが
strconcat  UPLOAD SWNAME
strconcat  UPLOAD “.cfg”
この部分。
次の行で実行します。
sendln UPLOAD
その後はログアウト処理です。   カンターン!!
 ④これが最後です。get-config.batというバッチファイルを作成します。
  これも先にサンプルを付けましょう。
get-confgi.bat

——————————————–
@echo off
pushd %~dp0
start TFTPD
mkdir tmp
.ttpmacro.exe .get-config.ttl xx.xx.xx.150 zzzzzL31
.ttpmacro.exe .get-config.ttl xx.xx.xx.151 zzzzzL23
taskkill /im TFTPD
set DAY=%date:~-10,4%%date:~-5,2%%date:~-2,2%
ren tmp %DAY%
rmdir tmp
——————————————–
@echo offはエコーオフです。
pushd %~dp0は今この実行バッチがある場所がカレントディレクトリになるという宣言です。コレ便利!!!
start TFTPDは同じ場所にあるTFTPD.exeを実行します。これやって待ち受けを作らないと始まりません。
mkdir tmpは設定情報を格納するフォルダを一時的にtmpフォルダとして作成します。先にTFTPDのiniファイルでここに
保存されるように指定しています。
ttpmacroはマクロ実行exe 次が読み込むマクロファイル 次がparam2 次がparam3です。
paramが空白区切りでparam0,param1,param2,param3と命名されているのだと思います。
これが採取したい台数分ズラズラ並びます。割愛していますが実際はこれが200行近く整然と並んでいます。
taskkill /im TFTPDでTFTPDを終了します。上げたままでもいいと思っていたのですが、先日別のユーザで同じように
考えていたら先輩に指摘されちゃいました。「TFTPなんかFTPと違って認証もないから送り付けられたり、取られたり
し放題やんか」って。よく考えたらごもっともです。
set DAYはDAYに今日の日付を定義させるおまじないです。dateがWindowsの標準日付フォーマットみたいなのらしい
ですが、間に/が入っているのでそのままフォルダ名に使えません。何桁目を飛ばしてくっつけるみたいな処理らしい
ですが、もう私にとってはおまじないで済ませたいコマンドです。
tmpフォルダを日付フォルダにrenameします。
tmpフォルダは削除します。
後に残るのは8+2ファイルと今日の日付フォルダ、その中に設定ファイルが台数分です。
如何だったでしょうか?
今日は充実しました。