5.1.1. パスワードを変数化する
今までルータのログインパスワードは、’cisco’である事を前提としていました。
それぞれの環境で、それぞれのパスワードに読み替えて、マクロを作成頂いていたと思います。
5.1.1.1. パスワード変更の必要性
ここで、仮に、こんな話が挙ったと考えてみましょう。
A部長「パスワードがciscoだとちょっとよわいなあ」
B主任「そうですね、部長」
あなた「(ふむふむ・・・)」
A部長「パスワードはcisco123に変更しよう」
B主任「そうですね、部長!」
あなた「(マクロの変更が必要だなあ・・・)」
A部長「毎月別のパスワードに更新も必要だ」
B主任「マクロも変更が必要ですね、部長!」
あなた「(お、B主任がやってくれるのかな!?)」
B主任「Cさん(あなた)よろしく〜」
あなた「・・・」
5.1.1.2. マクロ内でパスワードを変数化する必要性が発生
B主任の華麗なるスルーパスもさることながら、A部長は十年くらい前の日経コンピュータのセキュリティ特集でも読んだようです。
エピソード内では、あなたが作成しているマクロが運用マクロとして使われているわけですが、定期的なパスワード変更が必要になってしまいました。
今回の場合、ログインパスワードとenableパスワードはともに同じ値で良しとしたいと思いますが、素直にマクロを変更するとなると、どこの部分で変更が必要かを確認してみます。
5.1.2. マクロのパスワードを変数化する
それでは、これまでに作成したマクロのパスワード部分を変数にしていこうと思います。
5.1.2.1. 前回までに作成したマクロの振り返り
以下は、前回までに作成したマクロです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
connect '172.16.0.1:23 /nossh /T=1' changedir 'C:\Users\Shun\Desktop' logopen 'show_run.log' 0 0 wait 'Password:' sendln 'cisco' wait '>' pause 3 sendln 'en' wait 'Password' pause 3 sendln 'cisco' wait '#' pause 3 sendln 'terminal length 0' wait '#' pause 3 sendln 'show run' pause 5 sendln '' wait '#' logclose logopen 'show_log.log' 0 0 sendln 'show log' pause 5 sendln '' wait '#' sendln 'exit' end |
このマクロの中で、パスワードを投入している箇所は、7行目と13行目の二箇所ですね。
一回変更するだけならまだしも、毎月定期的に変更をしていくとなると、結構変更漏れとか変更忘れなんかが出てしまいそうです。
しかも7行目と13行目みたいな中途半端な場所に変更箇所があるため、変更作業中に他の行を消してしまったり、、、と考えると、頭が痛くなってきますね。
5.1.2.2. マクロの中で変数宣言する
せめて、もっとわかりやすいところに更新場所があれば・・・!
できるんです。
ここで、いよいよ変数の登場です。
変数とは、文字列やら数値やらを代入する事ができる仕組みのことを言います。しかも、代入しておけば、マクロの中で、その変数がさも実際の値であるかのように扱えるので、非常に便利です。
変数を使うには、まず、『変数宣言』というものが必要になります。
『変数宣言』とは、「このマクロでは、Aと言ったら’Tokyo’という文字列のことですよ」と宣言するルール決めのことです。
5.1.2.3. 変数宣言をしてパスワードに文字列を代入する
言葉だけで説明すると全く意味がわかりませんので、早速書いていきましょう。
1 |
PWD = 'cisco123' |
これで、PWDという文字列は’cisco123’の事だよ、と宣言した事になります。
このマクロの中においては、PWDという文字の並びが出てきたら常に、「’cisco123’の事を言っているんだな」と勝手に解釈されるのです。
変数には数値を代入する事も可能です。
例えば、
1 |
TEN = 10 |
この場合、TENという文字列がマクロ内に出てくると、常に10という値に置き換えられて、動作する事になります。
ちょうど、数学の『x=1』と似ていますね。
変数の場合は、アルファベット一文字じゃなくてもいいし、数字の代わりに別の文字列も入れる事ができます。
5.1.2.4. 変数化したパスワードをマクロに取り込む
実際にマクロの中に取り込んでみると、イメージがわきやすいと思いますので、変数を使ってマクロを書き直してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
PWD = 'cisco123' connect '172.16.0.1:23 /nossh /T=1' changedir 'C:\Users\Shun\Desktop' logopen 'show_run.log' 0 0 wait 'Password:' sendln PWD wait '>' pause 3 sendln 'en' wait 'Password' pause 3 sendln PWD wait '#' pause 3 sendln 'terminal length 0' wait '#' pause 3 sendln 'show run' pause 5 sendln '' wait '#' logclose logopen 'show_log.log' 0 0 sendln 'show log' pause 5 sendln '' wait '#' sendln 'exit' end |
1行目にPWDを使って変数宣言をして、9行目、15行目が今まで’cisco’だったのが、PWDに置き換わっていますね。
もう少し詳しく言うと、このマクロでは1行目でPWDと言えば’cisco123’と決まったので、9行目と15行目に出てきたPWDも1行目の宣言に基づいて、’cisco123’と認識されたということになります。
こうしておけば、今後パスワードを変更する時、1行目だけを変更すればよくなりますね。
5.1.2.5. マクロにコメントを入れてわかりやすくする
ところで、どうもマクロが長くなってきて、いろいろと読みにくくなってきていると思いませんか?
そうです。コメントをそろそろ使っていきましょう!
最低限、変数宣言の部分にコメントを入れておくと、自分があとで見たときにわかりやすくていいですね。
以下は私がコメントを入れる際のサンプルです。わかりやすくするため、通常より多めに入れています。
必要以上にコメントを入れすぎると、逆に見づらくなってしまうという弊害もありますので、注意しつつ入れるようにしてみてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
;================================= ;passwordの変数、月に一回変更する ;================================= PWD = 'cisco123' ;================================= ;telnet接続部分desktopにログ保存 ;================================= connect '172.16.0.1:23 /nossh /T=1' changedir 'C:\Users\Shun\Desktop' ;================================= ;show runのログを取得 ;================================= logopen 'show_run.log' 0 0 wait 'Password:' sendln PWD wait '>' pause 3 sendln 'en' wait 'Password' pause 3 sendln PWD wait '#' pause 3 sendln 'terminal length 0' wait '#' pause 3 sendln 'show run' pause 5 sendln '' wait '#' logclose ;================================= ;show logのログを取得 ;================================= logopen 'show_log.log' 0 0 sendln 'show log' pause 5 sendln '' wait '#' sendln 'exit' end |
5.1.3. まとめ
どうでしょうか?
玄人っぽくなってきた気がしませんか?
コメントを入れると、マクロにいぶし銀の輝きが生まれてくるのです。そして、行数も稼げてしまうので、ぱっと見「すごい事をやってそうなマクロだ・・・」と思わせる事ができます。
今回は変数宣言をすることで、パスワードの文字列をPWDという変数に代入することを学びました。
変数をうまく使えば、パラメータの変更などに柔軟に対応することができるようになります。
これくらい書けるようになると、隣の部署から「あそこの部署には、生粋のマクラー(マクロの使い手)がいるらしいぞ・・・」とひそひそ声が聞こえてきそうです。
ですが、我々の進化はまだ止まりません。
次回は、もう少し変数を活用して、いきましょう。
ピンバック: logcloseの使い方 | ゼロから始めるTera Termマクロ
ピンバック: getdirコマンドを使ってログを任意の場所に保存 | ゼロから始めるTera Termマクロ