logo
Tera Termマクロで自動ログインのイメージ

SEの仕事をしていると、Tera Termからサーバにリモートログインすることがよくあります。
サーバの台数が多いとユーザ名やパスワードを入力するのに手間がかかるので、自動化して手間が省けます。
また、間違ったサーバにログインすることを防止できるので一石二鳥です。
Tera Termのバージョンによっては動かない場合もあるので使用に関しては自己責任です。

SSHでサーバにログイン

;###ログイン情報

username = 'next'
password = 'next'
hostname = '192.168.0.1'

;###ログイン操作

msg = hostname
strconcat msg ':22 /ssh /auth=password /user='
strconcat msg username
strconcat msg ' /passwd='
strconcat msg password

connect msg
wait '$' '#'

ここからは、自分の備忘録です。
サーバログイン後の操作です。

メッセージ送信

topコマンドを実行

sendln 'top'

メッセージ受信①

受信後、メッセージを’0’と比較、trueならばresultに0が入って、メッセージボックスが表示される

recvln
strcompare inputstr '0' 
if result == 0 then
    messagebox 'true' 'title'
endif

メッセージ受信②

10秒以内にプロンプトが表示されなかったら終了

timeout = 10
wait '$' '#'

ファイル送信

ローカルのC:\tmp\test.txtファイルをリモート先の/tmp/配下に送信する
ファイル送信中のプロセスの終了でファイル転送完了とする

sourfile = 'C:\tmp\test.txt'
destfile = '/tmp/'
scpsend sourfile destfile 
do
    sendln 'ps -ef |grep -v grep |grep -c scp'
    mpause 1000
    recvln
    recvln
    strcompare inputstr '0' 
loop while result != 0

ファイル受信

リモートにある/tmp/test.txtファイルをローカルのC:\tmp\配下に受信する。
ファイル受信中のプロセスの終了でファイル転送完了とする

changedir 'C:\tmp\'
scprecv '/tmp/test.txt'
do
    sendln 'ps -ef | grep -v grep | grep -c scp'
    mpause 1000
    recvln
    recvln
    strcompare inputstr '0' 
loop while result != 0;

より詳しく知りたい方へ

Tera Term ヘルプ 目次
https://ttssh2.osdn.jp/manual/4/ja/

MACRO for Tera Term
https://ttssh2.osdn.jp/manual/4/ja/macro/

Tera Termソースコード解説
https://ttssh2.osdn.jp/manual/4/ja/reference/sourcecode.html

それではSee you next time👉