10.2.1. yesnoboxの『これから』感 前回はmessageboxと呼ばれる、単純なOKボタンを押させるだけのGUIを表示させましたが、何かを選択したくなるのが人の常というものです。 そこで、今回はyesnoboxと呼ばれるボタンを表示させてみます。
10.2.1.1. yesnoboxとは
この画像の通り、yesnoboxはmessageboxと違って、ユーザが押すボタンが2つ存在します。 2つ存在するということは、選択することができるということですので、選択に応じて分岐、つまり条件分岐に使えるボタンということになります。 今回は基礎編ということで、まずは「マクロを始めるか・始めないか」のyes/noを選択する仕組みを作ってみたいと思います。10.2.1.2. yesnoboxの構文
yesnoboxはmessageboxと同じ構文で書くことができます。
1 |
yesnobox 'メッセージ' 'タイトル' |
ちなみに、上の画像はこういう書き方をしています。
1 |
yesnobox 'YesNoBoxです' 'これが' |
messageboxとyesnoboxの違いは選択肢に応じて、”result”に0か1が格納されるということです。 これは、filereadlnでもう読み込むものがないときと全く同じ仕様ですので、その時に作ったif文と同じ形を使うことができます。
10.2.2. yesnoboxを実際に書いてみる
それでは、yesnoboxを実際に書いてみたいと思います。10.2.2.1. yesnoboxでマクロの開始を判断させる
今回はマクロを開始するかしないかを判断するため、マクロの冒頭にyesnoboxを配置する必要があります。 yesnoboxのメッセージは特になんでもいいと思いますが、今回は以下のようにしておきたいと思います。
1 |
yesnobox 'マクロを開始しますか?' 'Logging' |
このコマンドの後ろでresultの判断をさせる必要があります。 コマンドリファレンスには はいを押した時 =>1 いいえを押した時 =>0 がresultに格納されると書いてありますので、if文の書きっぷりとしては、こうなります。
1 2 3 4 |
yesnobox 'マクロを開始しますか?' 'Logging' if result=0 then end endif |
102.2.2. マクロへの取り込み
では、yesnoboxをマクロの中に取り込んでいきます。 これで、マクロが開始された時に、以下のボックスが表示されます。 はいを押した時 =>マクロが進行する いいえを押した時 =>マクロが終了する
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 137 138 139 140 141 142 143 144 |
;================================= ;yesnoboxの表示 ;================================= yesnobox 'マクロを開始しますか?' 'Logging' if result=0 then end endif ;================================= ;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 = 'ciscoshun' ;================================= ;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 |
]]>