teratermマクロで自動ログインした後にコマンドを実行する
teratermマクロで自動ログインした後、続けてコマンドを実行したいこと、あると思います。私はありました。
例えば、取得しているログに残すためにdateコマンド叩いたり、作業用のディレクトリに移動したりなど。
ログイン時に自動でコマンドを実行させたい…毎回ログイン時に同じコマンド実行するのはめんどくさい…(し、ちょいちょい忘れる)
ということで以下のようなteratermマクロを作りました。
autoLogin.ttl
;仮想環境自動ログインマクロ
;各処理呼び出し
call login
call execCommand_beforeLogin
end
;ログイン処理実行
:login
【自動ログイン処理】
return
;コマンド実行
:execCommand_beforeLogin
sendln 'id;date;uname -n'
sendln 'cd ~/WORK'
return
が、うまく動かない
上記のマクロを実行するとこうなります。
自動ログインはできるのに後続のコマンドが実行されない…
こうしたら動いた!
autoLogin.ttl
;仮想環境自動ログインマクロ
;各処理呼び出し
call login
call execCommand_beforeLogin
end
;ログイン処理実行
:login
【自動ログイン処理】
return
;コマンド実行
:execCommand_beforeLogin
;★☆↓この行を追加★☆
wait USERNAME
;★☆↑この行を追加★☆
sendln 'id;date;uname -n'
sendln 'cd ~/WORK'
return
どういうこと?
waitでコンソールに自分のホスト名が表示されるまで待機して、それからsendlnでコマンドを実行しているということです。
ログイン直後にコンソール画面に返ってくる文字列を指定すればいいので、ユーザ名でなく、ホスト名とか、なんならプロンプトの「#」を指定しても自動ログイン可能です。
職場では大量のサーバにログインする必要があるうえ、運用ルールでログイン時にいくつかのコマンドを実行する必要があるので相当煩わしかったのですが、このマクロによって相当作業の効率化が図れそうです。