5.2.1. マクロのログを保存する場所を変更する
前回はパスワードを変数にすることを学びました。
変数を使うことによって、マクロの更新が楽になりそうだということがわかりました。
変数の使い方を学んだところで、少し応用の形を学んでおきたいと思います。
5.2.1.1. 前回までのログ保存の方法
これまで、changedirコマンドを使い、デスクトップを保存場所に指定するためフルパスでデスクトップを設定していました。
1 |
changedir 'C:\Users\Shun\Desktop' |
必ずデスクトップに保存する場合はこの書き方でもいいのですが、マクロをダブルクリックで起動する場合などは、マクロと同じディレクトリにログができてほしいものです。
さらに言うと、’C:\Users\Shun\Desktop’というパスは、私のPC上でのデスクトップのパスですから、この書き方をしている限りはマクロに汎用性があるとは言えません。
なぜなら、このマクロは、私のPCで動かした時にはデスクトップにログを保存してくれますが、他のPCで動かした時にはエラーとなってしまうからです。
5.2.1.2. getdirコマンドで現在のディレクトリを取得する
この問題を解消するためには、マクロが動作しているディレクトリをマクロ自体が調べる、という動作を行う必要があります。
それを行うコマンドとして、
1 |
getdir ディレクトリを格納する変数名 |
が用意されています。
このコマンドでは『ディレクトリを格納する変数名』の部分に、マクロが配置してあるディレクトリのパスを格納してくれます。
例えば、私のデスクトップ上のマクロでgetdirコマンドを動かしたとすると、『ディレクトリを格納する変数名』の部分に、’C:\Users\Shun\Desktop’が格納されます。
5.2.1.3. getdirの実際の動きを見る
実際のコマンドで説明してみましょう。
『ディレクトリを格納する変数名』にはDIRという変数名を使用して、コマンドに落としてみると以下のようになります。
1 |
getdir DIR |
これで、DIRには’C:\Users\Shun\Desktop’が格納された状態になっています。
変数宣言的に言うと、
1 |
DIR = 'C:\Users\Shun\Desktop' |
と同じ状態になっています。
仮にマクロの配置ディレクトリが’C:\Users\Shun\Desktop\teraterm’だった場合は、
1 |
getdir DIR |
を行うと、DIRには ‘C:\Users\Shun\Desktop\teraterm’が格納されています。
getdirを行うことによって、例えばこのマクロを『鈴木一朗』さんのPCのデスクトップで動作させた場合、
1 |
getdir DIR |
を実施すると、DIRには’C:\Users\鈴木一朗\Desktop’が格納されることになり、汎用性が上がるということが言えます。
5.2.2. シンプルマクロにgetdirを組み込む
では、実際にgetdirをこれまで作成したマクロの中に取り入れてみます。
5.2.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 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 |
11行目にデスクトップへのフルパスを書いています。
5.2.2.2. getdirコマンドを組み込む
これをgetdirに変更してみます。
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 51 |
;================================= ;passwordの変数、月に一回変更する ;================================= PWD = 'cisco123' ;================================= ;telnet接続 ;マクロディレクトリにログ保存 ;================================= connect '172.16.0.1:23 /nossh /T=1' getdir DIR changedir DIR ;================================= ;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.2.2.3. getdirを組み込んだ場所の確認
11行目の
1 |
getdir DIR |
で、マクロのパスを取得してDIRに格納しています。
その後の
1 |
changedir DIR |
でTera Termの動作ディレクトリがDIRに変更されます。
5.2.3. まとめ
今回登場したコマンドは以下のコマンドです。
getdir DIR
コマンドを使うことによって、「XXXX.ttl」(マクロの名前)が保存されているディレクトリのパスをDIRに格納してくれます。
changedirと組み合わせて使うことにより、ログの保存場所をDIRにすることができます。
マクロの記述が随分すっきりしたように感じられませんか?
これで自分以外のPC上で動かしても、うまくログが取れるようになりました。
次回は、さらに変数を活用して、マクロの表記を見やすくしていきましょう。