TeraTerm Macro の組み方

こんにちは、しーるです。

TeraTerm Macro についてです。

ログを引っ張って書き出し、そのままVBSへ渡して解析、形成、メール送信とかしていましたが、久しぶりに触ると忘れているものですね。

ということで、TeraTerm macroのテンプレレベルでのコマンド覚書です。


準備


  ・TeraTerm本体

  ・拡張子「TTL」は「C:\Program Files (x86)\teraterm\ttpmacro.exe」へ関連付けを行います。

    ※インストール途中で関連付けをするかどうかの画面も出ます。

  ・インストール後は「設定」→「端末設定」から文字コードを「UTF-8」へします。(しないと日本語が文字化けします)

  マクロファイルはメモ帳で作成して、拡張子変更で問題ありません。


サーバーやルーターへ接続


; Telnet login macro for Tera Term

;=====================================================================
; 接続情報
HOSTADDR = ‘127.0.0.1’
USERNAME = ‘root’
getpassword ‘C:\TeraTermMacro\password.dat’ ‘passwordname’ Password
;=====================================================================

COMMAND = HOSTADDR
strconcat COMMAND ‘:22 /ssh /2 /auth=password /user=’
strconcat COMMAND USERNAME
strconcat COMMAND ‘ /passwd=’
strconcat COMMAND Password

; 接続
connect COMMAND

・コメントアウトは「;」です。

・「HOSTADDR」など流用が出来るように変数を作って格納します。

・パスワードですが、そのまま書いてもよいのですがセキュリティ上ぱっとわからないように暗号化して保存します。一番最後の「Password」にpasswordnameと紐づいたパスワードが保存され流用できます。

passwordnameは router1 とか ServerName とか対応する名前を適切に決めます。

・「strconcat」は文字列結合で利用です。

・「connect」は出来上がった内容で起動、接続します。


待ちと入力


wait   ‘username@servername:~$’
sendln ‘sudo su -‘
wait ‘[sudo] password for username:’
sendln Password

・「wait」は指定の文字列が表示されるまで待ちます。基本コンソールに表示される文字列のコピーで大丈夫です。

・「sendln」は指定の文字列を入力しエンターをします。もし改行が不要な場合は「wait」にします。


関数(サブプログラム)


call subpg

:subpg

wait ‘’

return

・「call」で呼び出すブログラムを指定します。

プログラムを分けることで、処理を見やすくして、プログラムの流用をしやすくします。


ログの取得


finame = ‘C:\logs\authfail_temp.txt’

logautoclosemode 1

;## log 取得 ##

logopen finame 1 0

・「logautoclosemode」はマクロが終了後ログファイルを自動で閉じます。最後に「logclose」を書くのを忘れるといけないので最初に書くほうが良いです。

・「1 0」の1は全て出力します。0は既存のファイルがあれば上書きし、1にすると追記します。


VBSの起動


;# vbsの起動と渡す変数設定

vbspath = ‘wscript.exe C:\TERATERMMACRO\logchecker.vbs ‘
strconcat vbspath data1
strconcat vbspath ‘ ‘
strconcat vbspath data2
exec vbspath

・VBSに限らず「exec」でプログラムを起動できます。

・「data1」等は引数設定です。

・ログを取得して、VBSやPowerShellで解析というのも良いです。またルーチンワークだとログ形成も役に立ちます。


TTLの分割


hensu.ttl

uname = ‘username’

main.ttl

include ‘hensu.ttl’

・「main.ttl」から「include」で呼び出します。そのまま「main.ttl」へ結合されるようなイメージで良いです。

・ユーザーがプログラムに明るくなくても、分離することで容易に扱えるようになります。


メッセージを表示


messagebox ‘メッセージ’ ‘タイトル’

・関数の中身や処理終了等に使います。


繰り返し処理 (例として10回繰り返し)


i = 10
while i
  sendln ”
  i = i-1
endwhile

for i 1 10

  sendln ”

next

i = 10

do while i > 0

  sendln ”

  i = i – 1

loop

i = 1

until i > 10

  sendln ”

  i = i + 1

enduntil

このようなループから抜けるには「break」を使います。キーボードショートカットは「ALT + B」です。


if文とresult(connectの結果が入っています)


if result == 0 then

  ; TeraTermとリンクされていない

elseif result == 1 then

  ; ホストへ接続していないが、TeraTermとリンクしている

elseif result == 2 then

  ; ホストへ接続していて、TeraTermとリンクしている

endif


配列処理


intdim intarray 3 ; 3つの要素数を持つ数値配列を宣言

intarray[0] = 123

intarray[1] = 456

intarray[2] = 789

intarray[3] = 123 ; オーバーしているのでエラーになる


ボックス関連


yesnobox ‘内容’ ‘タイトル’

if result == 0 then

  ; 「いいえ」ボタンが押された場合の処理

elseif == 1 then

  ; 「はい」ボタンが押された場合の処理

endif

inputbox ‘メッセージ’ ‘タイトル’ ‘初期値(省略可能)’

スポンサーリンク