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が動くような環境ではもっと柔軟にいろんなことができそうなので、機会を見つけてそちらも試してみたいと思います。


  1. 今回は少しでも調べる時間を減らしたかったので、シェルスクリプトでこれら3つのコマンドを使うマクロを生成してゴリ押ししました ↩︎

関連記事


  1. HugoテンプレートをOGPやTwitter Cardsに対応する
  2. 既存コードへのCheckstyle導入におけるルールの選定
  3. Checkstyleで汎用的に使えそうなルールをピックアップしてみた
  4. JaCoCoでJavaのテストカバレッジのレポートを出力する
  5. 指定したCommitのAuthorとCommitterを書き換える
  6. Windowsのコマンドラインから7-Zipでtar.gz形式に圧縮する
  7. exampleSiteのローカルサーバ起動やビルドを1行で実行する

comments powered by Disqus