teratermマクロで「wait」の使い方基礎から応用までご紹介します。
実際にteratermマクロを使用しており、最近「wait」と「if」を併用して、場合分けなど便利な事が出来たのでそちらもご紹介します。
teretermマクロは識別子が「.ttl」のファイルで、teratermの自動化ができます。そのマクロでwaitを使用できれば途中で一時停止ができ、解析などにも役立ちます。
teratermマクロでwaitの使い方!
teratermマクロでの基礎構文
teratermマクロで「wait」を使用すればプロンプトを待つ事が出来ます。
基本的な使い方は以下になります。
wait '待ちたい文字列'
teratrmマクロの「wait」を実際に使ってみる
例文でLinuxサーバーにログインしプロンプトが返ってくるまで待ちます。
以下のようにwaitの一文を入力します。
wait '#'
これで[root@localhost ~]#がプロンプトに帰ってくるまでマクロを停止します。
teratrmマクロの「wait」で複数の文字を待つ
プロンプトが#ではなく$の時もあります。
teratermマクロのwaitでは複数を待つことも可能です。
以下のようなwaitを記入したteratrmマクロにします。
wait '#' '$'
#と$でどちらが来てもマクロが進みます。
上のteratrmマクロの場合は以下になります。
#の場合はresultに1が、$の時はresultに2が入ります。タイムアウトの場合はresultに0が入ります。
waitとifを併用して場合分けする
ifを使用し場合分けして、続く処理を変更してみましょう。
以下のTeratermマクロを記入します。
;Hostnameを設定しているNW機器やサーバーにでも対応するログインマクロ
wait 'Hostname:' 'Password:' '#'
;Hostname:が来た時の処理
if result=1 then
sendln 'echo switch'
;Password:が来た時の処理
elseif result=2 then
sendln 'echo router'
;サーバーが来た時の処理
elseif result=3 then
sendln 'echo server'
endif
これでどんなプロンプトが来てもひとつのteratermマクロファイルで対応できます。
サーバーにログインしてみましょう。
結果serverと表示になりました。
waitlnについて
エンターをした後に指定の文字列を待ちます。
一時ユーザーのエンターを待つことができます。
先程のteratermマクロの「send」を「sendln」に変更して見ます。
以下のコードになります。
;Hostnameを設定しているNW機器やサーバーにでも対応するログインマクロ
waitln 'Hostname:' 'Password:' '#'
;Hostname:が来た時の処理
if result=1 then
sendln 'echo switch'
;Password:が来た時の処理
elseif result=2 then
sendln 'echo router'
;サーバーが来た時の処理
elseif result=3 then
sendln 'echo server'
endif
このteratermマクロを実行してみます。
ここでエンターが来るのを待ちます。
エンターを押してみます。
すると「#」があったのでteratermマクロが進みます。
teratermマクロでwaitの使い方!まとめ
teratermマクロの「wait」の基本的な使い方は以下になります。
wait '待ちたい文字列'
以下の様に10個まで引数を設定できます。
wait '#' '$'
その時にresultに引数の番号が入ります。
それを使用してifで場合分けも出来ます。
「wait」を「waitln」にするとエンターした後に指定の文字列を待ちます。
一旦マクロを止めてユーザーの入力を待つようなマクロも作成可能です。
そういったマクロの例文は以下になります。
;Hostnameを設定しているNW機器やサーバーにでも対応するログインマクロ
waitln 'Hostname:' 'Password:' '#'
;Hostname:が来た時の処理
if result=1 then
sendln 'echo switch'
;Password:が来た時の処理
elseif result=2 then
sendln 'echo router'
;サーバーが来た時の処理
elseif result=3 then
sendln 'echo server'
endif
このようなteratermマクロをよかったら試して見て下さい。