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. Terraformを選定する3つの理由
  2. TerraformでGitHub ActionsのIPリストを参照する
  3. Dependency Review Actionのライセンスチェック機能に関する調査メモ
  4. クエリパラメータを使ってお手軽にGitHubのプルリクを作成する
  5. 他の人には読めない形式でGitHubのSecretsの値を読み出す
  6. GitHub Actionsでプルリクのコメントに複数行テキストを投稿する
  7. GitHub Actionsでエラーの時だけ特定の処理を実行する

comments powered by Disqus