10.1.1. messageboxの魔力 これまでマクロはCLIでの動作をベースに作ってきました。 そこにGUIっぽい動作をするMessage Boxをうまく取り込むと、非常に見た目がよくなります。
10.1.1.1. messageboxの見た目は?
このスクリーンショットにある通り、非常にWindowsっぽい見た目のボックスがポンっと出てきます。 Tera Termのバージョンが新しくなるに連れて、いろんな形で文字列を表示させることができるようになりましたが、以前はmessegeboxコマンドしか存在しなかったため、マクロのdebug作業をするのにも、messageboxを使っていました。 ちなみに私は未だにdebugにmessageboxを使います。10.1.1.2. messageboxの文法
messageboxは非常に簡単な文法で書けます。
1 |
messagebox 'メッセージ' 'タイトル' |
このように書くだけで、messageboxが表示できるのです。 ちなみに、上のスクリーンショットのmessageboxは
1 |
messagebox 'メッセージボックスです' 'これが' |
のように書いています。
10.1.2. messageboxを使ってみる
では、実際にmessageboxをマクロに取り込んでいきます。10.1.2.1. messageboxを入れ込む場所
messageboxはマクロの最後に入れ込むのが個人的には好みです。 なぜなら、マクロが終わったタイミングでmessageboxが出ると、マクロが終わったことを目視で確認できる上に、共有端末でマクロを走らせていた場合に、他の人にもマクロの終了を知らせることができるからです。 messageboxにはどんな文字列を表示させてもいいと思いますが、私はマクロが終わったことを明確に知らせるような内容のものがいいと思います。 今回は下記のようにしておきたいと思います。
1 |
messagebox 'Successfully Done' 'Logging' |
カッコをつけて英語にしてみましょう。
10.1.2.2. マクロがこちら
今回は詳しい解説は不要ですね。マクロの最後、endの前に入れています。 くれぐれもendwhileの前に入れないようにしてください。 ループのたびにOKを押すハメになってしまいます。
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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
;================================= ;22ならSSH、その他ならそのポート番号にtelnet ;USER変数にSSH様のusernameを書きます ;================================= PORT=23 USER='sshuser' ;================================= ;fileopenでlist.txtを開き、FHに格納 ;================================= fileopen FH 'list.txt' 0 ;================================= ;whileでループを開始する ;================================= while 1 ;================================= ;filereadlnでFHから読み出し ;LINEに格納 ;================================= filereadln FH LINE ;================================= ;ifを使って、ファイルの最後まで来たら、 ;マクロのループから抜ける ;================================= if result=1 then break endif ;================================= ;LINEにIPアドレスが格納されたので、 ;LINEをIP_ADDRに代入する ;================================= IP_ADDR = LINE ;================================= ;変数格納 ;================================= PWD = 'cisco123' ;================================= ;PORTに22が書いてあれば、SSH ;elseはその番号に応じてtelnet ;PORTの型は整数なので、 ;int2str関数で文字列に変換し ;PORT_STR変数に格納する ;================================= if PORT=22 then strconcat IP_ADDR ' /ssh /auth=password /user=' strconcat IP_ADDR USER strconcat IP_ADDR ' /passwd=' strconcat IP_ADDR PWD connect IP_ADDR else strconcat IP_ADDR ':' int2str PORT_STR PORT strconcat IP_ADDR PORT_STR strconcat IP_ADDR ' /nossh /T=1' connect IP_ADDR wait 'Password:' sendln PWD endif ;================================= ;telnet接続、ログ保存ディレクトリ ;================================= getdir DIR changedir DIR ;================================= ;ログ保存名の確定 ;================================= getdate DATE '%Y%m%d-%H%M%S.log' SHRUN = 'show_run_' SHLOG = 'show_log_' strconcat SHRUN DATE strconcat SHLOG DATE ;================================= ;show runのログを取得 ;================================= logopen SHRUN 0 0 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 SHLOG 0 0 sendln 'show log' pause 5 sendln '' wait '#' sendln 'exit' logclose pause 5 ;================================= ;ここでループ元に戻る ;================================= endwhile ;================================= ;FHを無効化する ;================================= fileclose FH ;================================= ;messageboxの使用 ;================================= messagebox 'Successfully Done' 'Logging' end |
]]>