TeraTermのマクロにおけるリンクと状態制御 その4(2021/02/04) [Windows]
その1で、sshはtelnetに比べ制御が難しいと書きましたが、本質的なところは変わりません。その3で紹介した失敗事例はどちらにも当てはまります。
CISCO機器は制御しやすい印象です。プロンプト文字列が途中で変わること(> → #)や、特権モードに昇格するenableの存在があることぐらいでしょうか。個人的にwait系命令は、正規表現の使えるwaitregex命令がお薦めです。
waitで待つ文字列は、「ホスト名」や「#」だけではその3で紹介したように暴走の原因となりますので、「ホスト名#」の組み合わせで待つのが良いと思います。
意外と難しいのがFreeBSDやLinuxを汎用的な方法で制御しようとする場合です。FreeBSDの場合、ログイン時に以下のようなバナーが表示され、ご丁寧にもプロンプト文字列にありがちな>を含んでくれています。
また、プロンプト文字列は個別カスタム可能ですし、シェルもcsh系とsh系でプロンプト文字列が異なります。
CISCO機器の様に「ホスト名」とプロンプト文字「>」の組み合わせで待ってしまうと、以下のように出力によって誤判定しそうな行が山のようにあり、これも暴走の原因になってしまいます。そのためFreeBSDやLinuxはプロンプト文字列を大いに工夫する必要があります。(あるいは汎用性をなくして固定値で実装するか)
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
コメント 0