SSブログ

TeraTermのマクロにおけるリンクと状態制御 その4(2021/02/04) [Windows]

その1で、sshはtelnetに比べ制御が難しいと書きましたが、本質的なところは変わりません。その3で紹介した失敗事例はどちらにも当てはまります。

CISCO機器は制御しやすい印象です。プロンプト文字列が途中で変わること(> → #)や、特権モードに昇格するenableの存在があることぐらいでしょうか。個人的にwait系命令は、正規表現の使えるwaitregex命令がお薦めです。
waitで待つ文字列は、「ホスト名」や「#」だけではその3で紹介したように暴走の原因となりますので、「ホスト名#」の組み合わせで待つのが良いと思います。

意外と難しいのがFreeBSDやLinuxを汎用的な方法で制御しようとする場合です。FreeBSDの場合、ログイン時に以下のようなバナーが表示され、ご丁寧にもプロンプト文字列にありがちな>を含んでくれています。
FreeBSD 12.2-RELEASE-p1 GENERIC

Welcome to FreeBSD!

Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories:   https://www.FreeBSD.org/security/
FreeBSD Handbook:      https://www.FreeBSD.org/handbook/

...

systat -vmstat

Other values are icmp, icmp6, ifstat, iostat, ip, ip6, netstat, pigs, sctp,
swap, tcp, or zarc. You can switch between displays using :<display> and exit
back to your shell by typing

:quit

                -- Benedict Reuschling <bcr@FreeBSD.org>

また、プロンプト文字列は個別カスタム可能ですし、シェルもcsh系とsh系でプロンプト文字列が異なります。
user1@MyFreeBSD:~ %
root@MyFreeBSD:~ # 

[user1@MyFreeBSD ~]$ 
[root@MyFreeBSD ~]# 

CISCO機器の様に「ホスト名」とプロンプト文字「>」の組み合わせで待ってしまうと、以下のように出力によって誤判定しそうな行が山のようにあり、これも暴走の原因になってしまいます。そのためFreeBSDやLinuxはプロンプト文字列を大いに工夫する必要があります。(あるいは汎用性をなくして固定値で実装するか)
root@MyFreeBSD:~ # cat /var/log/messages
...
Jan 10 02:48:43 MyFreeBSD pkg[98962]: pkg upgraded: 1.15.10 -> 1.16.1
...
Jan 27 14:57:09 MyFreeBSD kernel: ---<<BOOT>>---
...
Jan 27 14:57:09 MyFreeBSD kernel:   Features=0x870<PIC,HYPERCALL,VPINDEX,TMFREQ>
...



タグ:TeraTerm
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。