- 締切済み
TeraTermマクロ上でのカウンタ値足し算
次のような手順でTeraTermマクロを作成したいのですが、可能でしょうか?(ちなみに他の言語の使用または併用はなしを前提) 1) ルータのCLI上において、showコマンドでログを収集 2) 収集したログの一部のカウンタ値(2項目)を抽出 (例えば項目A、Bに対するカウンタ値をそれぞれ Ai、Bi) 3) 足し算:Ai+Biを実行し、結果:Ciを閾値:Dと比較 4) Ci=DかつCi>Dの場合、異常(警告)メッセージ出力 5) Ci<Dの場合、正常メッセージ出力 (Ai,Bi,Ci:項目A,Bのある状態における整数、D:定数) ご教授頂けますと、大変助かります。 もし可能であれば、適用例も希望します。 以上、宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- trapezium
- ベストアンサー率62% (276/442)
十分可能だと思います。 叩き台をつくってみました。直さなきゃならんのは、ログイン部分のやりとりと、ログから抜き出す正規表現、あと定数とか。かなり強力なマクロですが、何かスクリプトが使えれば特に難しくはないと思います。 ----- ; Sample macro for Tera Term ; Telnet login ; open Tera Term ; command line = 'TERATERM myhost.mydomain' (telnet) connect '192.168.1.1' ; set username UsernamePrompt = 'login: ' Username = 'admin' PasswordPrompt = 'Password:' ; get password from file getpassword 'password.dat' 'admin' Password timeout = 5 ; login wait UsernamePrompt sendln Username wait PasswordPrompt sendln Password ; OK, auto login complete. sendln 'show' setsync 1 stat=1 ai=0 bi=0 di=100 ; 閾値 while stat=1 recvln stat=result strmatch inputstr 'a_keyword ([0-9]+)' if result=1 then str2int ai groupmatchstr1 endif strmatch inputstr 'b_keyword ([0-9]+)' if result=1 then str2int bi groupmatchstr1 endif endwhile if ai+bi<di then messagebox '正常メッセージ' 'message' else messagebox '異常(警告)メッセージ' 'message' endif setsync 0 sendln 'exit' end
お礼
trapezium様 本日拝見させて頂きました。 まずは叩き台を作成頂き、有難うございました。 現時点で緊急性はなくなったものの、初心者からいきなりこのような 動作仕様から検討に入ることになったため、じっくりと取り組んでみ ようと思います。また初めての投稿で、回答頂けただけでも大変嬉し く感じております。 進展がありましたら、またご報告致します。 以上です。