PCとネットワーク機器やサーバとシリアルケーブルで接続してログインする方法について解説します。
シリアルログイン(コンソールログイン)のやり方
まずはコードを見てください。
connect '/C=1'
シリアルポートの番号を引数で渡すだけです(サンプルでは1番)。最近はシリアルポートを搭載しているパソコンが少なく、きっと皆さんはUSBシリアルを使用しているかと思います。そうすると単純に1とか2にはならないと思うので、使用したいシリアルポートが何番なのか事前に調べておく必要があります。
ボーレートを指定する
TeraTermの初期設定ではシリアルポートのボーレートは9600となっています。通常はこれでも問題ないかと思いますが、BIG-IPのようにボーレートが19200に設定されている場合もありますので、必要に応じてボーレートを指定します。
connect '/C=1 /BAUD=19200'
Tera Termが対応していないボーレートを指定すると、このオプションは無視されます。
ログイン処理
telnetと同じようにログインプロンプトやパスワードプロンプトの処理をすべて自分で書かなくてはなりません。
connect '/C=1' sendln sendln wait 'login' sendln 'foo' wait 'Password' sendln 'router' wait 'Router'
このサンプルはNEC製のIX2015というルーターへシリアル接続するTeraTermマクロです。
シリアル接続の面倒なところはシリアルログインしたままTeraTermを閉じるとログイン状態が保持されてしまうところです。ですので、シリアル接続したからといってログインプロンプトが表示されるとは限らず、もしかしたらパスワードプロンプトかも知れないし、既にログインしているかも知れません。では、そいういう場合に備えたTeraTermマクロを書いて見ましょう。
connect '/C=3' sendln pause 1 do wait 'login:' 'Passwaord:' 'Router#' if result == 1 then ;loginプロンプトが表示された場合 sendln 'foo' continue elseif result == 2 then ;Passowrdプロンプトが表示された場合 sendln 'router' continue endif loop while result != 3 ;Router# という文字列を受信するまでループ
ループ処理が混じっていて少し難しいかも知れませんが「Router#」という文字列を受信するまでひたすらループしているだけです。後は「login:」という文字列を受信したらユーザー名を送信し「Password:」という文字列受信をしたらパスワードを送信しています。