#1 Tera Termマクロとは?
対話的なやりとりを自動化するプログラムです。
Tera Termマクロは、ttlという拡張子を持ったファイルになります。
このファイルの中に、Tera Termのコマンドを記述することで、
ネットワーク経由でマシンにログインしたり、マシンの情報を取得する、
といったことが自動でできます。
#2 環境
Tera Termのバージョンは、4.99
VMware Workstation 14 Player上の仮想マシンを使いました。
[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ページをスクロールしてみます。
なお、マクロ中の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 –」を確実に処理する方法