LoginSignup
10

More than 1 year has passed since last update.

Tera Termマクロの使い方

Last updated at Posted at 2019-03-09

#1 Tera Termマクロとは?
対話的なやりとりを自動化するプログラムです。
Tera Termマクロは、ttlという拡張子を持ったファイルになります。
このファイルの中に、Tera Termのコマンドを記述することで、
ネットワーク経由でマシンにログインしたり、マシンの情報を取得する、
といったことが自動でできます。

#2 環境
Tera Termのバージョンは、4.99

VMware Workstation 14 Player上の仮想マシンを使いました。

OS版数
[root@server ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

[root@server ~]# uname -r
3.10.0-693.el7.x86_64

#3 マシンへの自動ログイン方法
Tera Termマクロをマウスでクリックするだけで、PCからマシンにログインすることができます。

##3.1 パスワード認証でログインする方法
パスワード認証でサーバにログインするマクロを以下に示します。

サーバのIPは、192.168.3.20です。sshv2でログインします。
その時のユーザID/パスワードは、root/xxxxxです。
そして、プロンプトとして#が表示されるまで待つ、という意味になります。
詳細は、ここ(connect)を参照してください。

マクロファイルの中身
connect '192.168.3.20:22 /ssh /2 /auth=password /user=root /passwd=xxxxx'
wait '#'
マクロの実行結果
Last login: Sat Mar  9 16:46:31 2019 from 192.168.3.3
[root@server ~]#

##3.2 チャレンジ・レスポンス認証でログインする方法
チャレンジ・レスポンス認証でサーバにログインするマクロを以下に示します。

マクロファイルの中身
connect '192.168.3.20:22 /ssh /2 /auth=challenge /user=root /passwd=xxxxx'
wait '#'

##3.3 クライアント認証でログインする方法
クライアント証明書を使って、サーバに自動ログインするマクロを以下に示します。
クライアントの秘密鍵は\pub_key\pub.ppkとして保存します。

マクロファイルの中身
connect '192.168.3.20:22 /ssh /2 /auth=publickey /user=hoge /keyfile="C:\pub_key\pub.ppk"
wait '#'

#4 ファイルを作成する方法
viでファイルを作成する方法について説明します。
ここでは、test.txtという名前のファイルを作成します。そして、その内容を表示してみます。

なお、下記マクロ中のsendとsendlnの違いは、
sendは文字列だけ、sendlnは文字列に続けて改行文字を送信する、という点です。

マクロファイルの中身
connect '192.168.3.20:22 /ssh /2 /auth=password /user=root /passwd=xxxxx'
wait '#'

;viでファイルを開く。ファイルを開いたら1秒待つ。
sendln 'vi test.txt'
pause 1

;viを入力モードにする。入力モードにしたら1秒待つ。
send 'i'
pause 1

;ファイルに文字列を書き込む。文字列を書き込んだら1秒待つ。
send 'Hello'
pause 1

;viを終了する。ESC=$1B :=$3A w=$77 q=$71 RET=$0D $0A
send $1B $3A $77 $71 $0D $0A
wait '#'

;ファイルの中身を表示する。ログインプロンプト#がでるまで待つ。
sendln 'cat test.txt'
wait '#'
マクロの実行結果
[root@server ~]# vi test.txt
[root@server ~]# cat test.txt
Hello
[root@server ~]#

#5 manページをスクロールする方法
ipコマンドのmanページをスクロールしてみます。

manページ中の"ip route"という文字列が表示されるまで、
スペースキーにより、manページをスクロールしてみます。
teraterm1.png
なお、マクロ中のwaitregexの詳細は、ここ(waitregex)を参照してください。

マクロファイルの中身
connect '192.168.3.20:22 /ssh /2 /auth=password /user=root /passwd=xxxxx'
wait '#'

; ipコマンドのmanページを表示する。
sendln 'man ip'
pause 1

; ip routeという文字列が表示されたら、スクロールを停止します。
; Manual pageという文字列は、manページの左下に表示される文字列です。
do
    waitregex 'ip route' 'Manual page'
    if result == 2 then ; 'Manual page'が表示されたときの処理
        send ' '        ; スペースを送信する
        pause 1         ; 1秒待つ
    endif
loop while result != 1  ; Manual page'が表示されたたループ処理を抜ける。

; 5秒間待ちます。
pause 5

; manの参照を終了する。
send 'q'
wait '#'

#6 ネットワーク上のマシンの情報を取得する方法
下記環境で、クライアントで実行したコマンドの実行結果をサーバで参照してみます。

環境
PC                     server                 client
 |                       | .20                   | .50
------------------------------------------------------
                   192.168.3.0/24

PCでTera Termマクロを実行します。
Tera Termマクロを実行すると、serverにログインします。
そのあと、clientにログインして、hostnameコマンドを実行します。
そして、実行結果をserverに転送します。

マクロの内容は、以下のようになります。

マクロファイルの中身
connect '192.168.3.20:22 /ssh /2 /auth=password /user=root /passwd=xxxxx'
wait '#'

; クライアントにsshログインする。
sendln 'ssh 192.168.3.50'
wait 'password'

; クライアントのパスワードを入力する。
sendln 'xxxxx'
wait '#'

; クライアントでhostnameコマンドを実行する。
sendln 'hostname >> client.txt'
wait '#'

; クライアントからサーバにファイルを送信する。
sendln 'scp client.txt root@192.168.3.20:/root'
wait 'password'

; サーバのパスワードを入力する。
sendln 'xxxxx'
wait '#'

; クライアントからログアウトする。
sendln 'exit'
wait '#'

; クライアントのホスト名を表示する。
sendln 'cat client.txt'
wait '#'
マクロの実行結果
Last login: Sat Mar  9 18:40:02 2019 from 192.168.3.3
[root@server ~]# ssh 192.168.3.50
root@192.168.3.50's password:
Last login: Sat Mar  9 18:40:03 2019 from server
[root@client ~]# hostname >> client.txt
[root@client ~]# scp client.txt root@192.168.3.20:/root
root@192.168.3.20's password:
client.txt                                                                             100%    7     2.7KB/s   00:00
[root@client ~]# exit
ログアウト
Connection to 192.168.3.50 closed.
[root@server ~]# cat client.txt
client
[root@server ~]#

#Z 参考情報
Tera Term Home Page
付録 A ASCII コード表 (16 進表現)
Tera Termマクロで「– More –」を確実に処理する方法

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10