hana_shinのLinux技術ブログ

Linuxの技術情報を掲載しています。特にネットワークをメインに掲載していきます。

Tera Termマクロの使い方

1 Tera Termマクロとは?

対話的なやりとりを自動化する言語です。Tera Termマクロは、ttlという拡張子を持ったファイルに記述します。そして、このファイルをクリックすると、たとえば、ネットワーク経由でホストに自動でログインすることができるようになります。

2 検証環境

PCでTera Termマクロを作成し、実行します。

    PC                      server                   client
(Windows10)              (CentOS7.9)                (CentOS7.9)
    |                         | .100                     | .105
  --------------------------------------------------------------
                        192.168.2.0/24

サーバ、クライアントのCentOS版数は以下のとおりです。

[root@server ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

カーネル版数は以下のとおりです。

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

Tera Termの版数は4.99です。

3 ホストへの自動ログイン方法

Tera Termマクロ を実行すると、PCからホストにログインできます。

3.1 パスワード認証でログインする方法

パスワード認証でサーバにログインするマクロを以下に示します。なお、connectの使い方は、connectを参照してください。

connect '192.168.2.100:22 /ssh /2 /auth=password /user=root /passwd=xxxxx'
wait '#'

Windows上でテキストエディタを使って、上記マクロをファイルに保存します。そのとき、拡張子はttlとします。以下のようになります。

3.2 チャレンジ・レスポンス認証でログインする方法

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

connect '192.168.2.100:22 /ssh /2 /auth=challenge /user=root /passwd=xxxxx'
wait '#'

3.3 クライアント認証でログインする方法

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

connect '192.168.2.100: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.2.100: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 '#'

上記Tera Termマクロを実行すると、サーバに test.txtが作成されます。そして、Helloが表示されることがわかります。

[root@server ~]# cat test.txt
Hello

5 manページをスクロールする方法

ipコマンドのmanページをスクロールしてみます。そして、manページ中の"ip route"文字列が表示されるまで、manページをスクロールしてみます。なお、waitregexの使い方はwaitregexを参照してください。

connect '192.168.2.100: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
(Windows10)              (CentOS7.9)                (CentOS7.9)
    |                         | .100                     | .105
  --------------------------------------------------------------
                        192.168.2.0/24
connect '192.168.2.100:22 /ssh /2 /auth=password /user=root /passwd=xxxxx'
wait '#'

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

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

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

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

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

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

; クライアントのホスト名を表示する。
sendln 'cat client.txt'
wait '#'

Z 参考情報

私が業務や記事執筆で参考にした書籍を以下のページに記載します。
Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ

Tera Term Open Source Project