Tera Termのマクロで、パスワードを扱う操作を自動化する
きっかけ
ターミナルを使っていると、操作を自動化したくなることがあります。
そんなときはシェルスクリプトを書けば大抵は楽になるのですが、sshなどでサーバを超えてアクセスする場合は少し厄介です。
そこで、Tera Termのマクロ機能を使ってsshコマンドを含む操作を簡略化してみました。
Teratermマクロのサンプル
以下、今回作ってみたマクロのサンプルです。(ドメイン名の部分は架空のものに置き換えています)
msg = 'Enter password for sudo'
passwordbox msg 'Get password'
pass = inputstr
; Execute ssh command
sendln "ssh tosi@example.com"
; Wait for password input, and send password
wait "password:"
sendln pass
; Wait for $ prompt, and execute date and exit commands
wait "$"
sendln "date"
sendln "exit"
; Wait for % prompt, and send ssh command
wait "%"
sendln "ssh tosi@example.com"
; Wait for password input, and send password
wait "password:"
sendln pass
; Wait for # prompt, and execute ls and exit commands
wait "$"
sendln "ls -l"
sendln "exit"
こちらのマクロを実行すると、パスワードの入力ダイアログが表示された後に後続のコマンドが実行されていきます。
具体的にはsshでログインした後にdateコマンドを実行してログアウトし、さらに別のサーバへsshでログインした後にlsコマンドを実行してログアウトしています。
この一連の処理においてパスワードは何度も入力する必要はなく、最初の一度だけ入力すればOKです。
サンプルで使用しているTera Termマクロのコマンド
サンプルで使用したコマンドは以下の通り。 詳細は公式のリファレンスを参照。
wait
指定した文字列が送られてくるまで実行を停止する。
sendln
指定した文字列および改行文字を送信する。
passwordbox
パスワードを入力するためのダイアログボックスを表示する。
まとめ
Teratermのマクロというだけで新しく覚えることが多そうだなーと思いましたが、この3つのコマンドを使うだけでもそれなりに自動化することができました。
複数のコマンドを実行したいときはこれの繰り返し文を調べればよさそうです。1
今回はTeratermのマクロを使うアプローチを試しましたが、Pythonのfabricが動くような環境ではもっと柔軟にいろんなことができそうなので、機会を見つけてそちらも試してみたいと思います。
-
今回は少しでも調べる時間を減らしたかったので、シェルスクリプトでこれら3つのコマンドを使うマクロを生成してゴリ押ししました ↩︎