【Teraterm】SSH接続TTLマクロ

## 使用方法
TeraTermでSSH接続を行うTTLマクロです。
基本的に接続毎にTTLマクロファイルを用意する想定です。
ホスト設定のみ編集することで使用できます。
初回起動時のみユーザ名やパスワードの入力が求められますが、次回以降は不要になります。
もしユーザ名やパスワードを変更した場合は、dataディレクトリ内のファイルを削除すればユーザ名やパスワードの入力が求められるようになります。

## SSH接続TTLマクロ（ログファイルなし）
```
; カレントディレクトリパス取得
getdir DIR

; ホスト設定
HOSTADDR = 'XXX.XXX.XXX.XXX'

LOGINUSERFILENAME = 'username_'
strconcat LOGINUSERFILENAME HOSTADDR
LOGINPWFILENAME = 'password_'
strconcat LOGINPWFILENAME HOSTADDR
FILEEXTENSION = '.dat'
INIFILE = 'TERATERM.INI'

; ユーザ情報格納ディレクトリ
USERINFODIR1 = DIR
strconcat USERINFODIR1 '\data'
USERINFODIR2 = USERINFODIR1
strconcat USERINFODIR2 '¥'

; ユーザファイル
USERNAMEFILE = USERINFODIR2
strconcat USERNAMEFILE LOGINUSERFILENAME
strconcat USERNAMEFILE FILEEXTENSION
USERNAMEPWFILE = USERINFODIR2
strconcat USERNAMEPWFILE LOGINPWFILENAME
strconcat USERNAMEPWFILE FILEEXTENSION

; ユーザ情報格納ディレクトリチェック
foldersearch USERINFODIR1
if result = 0 then
    foldercreate USERINFODIR1
    if result <> 0 then
        ERRORCREATEDIR = 'ディレクトリ作成に失敗しました。パス='
        strconcat ERRORCREATEDIR USERINFODIR1
        messagebox ERRORCREATEDIR 'ディレクトリ作成エラー'
        end
    endif
endif

; ユーザ名、パスワード取得
getpassword USERNAMEFILE LOGINUSERFILENAME LOGINUSER
getpassword USERNAMEPWFILE LOGINPWFILENAME LOGINPW

; 接続コマンド作成
COMMAND = HOSTADDR
strconcat COMMAND ':22 /ssh /auth=password /user='
strconcat COMMAND LOGINUSER
strconcat COMMAND ' /passwd='
strconcat COMMAND LOGINPW
strconcat COMMAND ' /F='
strconcat COMMAND INIFILE

; 接続実行
connect COMMAND
if result <> 2 then
    ERRORHOST = 'ホストに接続できませんでした。ホスト='
    strconcat ERRORHOST HOSTADDR
    messagebox ERRORHOST '接続エラー'
    end
endif

; 表示待ち
timeout = 10
wait LOGINUSER '@'
if result = 0 then
    disconnect
    end
endif

; マクロ終了
end
```

## SSH接続TTLマクロ（ログファイルあり）
```
; カレントディレクトリパス取得
getdir DIR

; 日付取得
getdate TODAY '%Y%m%d'
getdate NOW '\%Y%m%d_%H%M%S'

; ホスト設定
HOSTADDR = 'XXX.XXX.XXX.XXX'

LOGINUSERFILENAME = 'username_'
strconcat LOGINUSERFILENAME HOSTADDR
LOGINPWFILENAME = 'password_'
strconcat LOGINPWFILENAME HOSTADDR
FILEEXTENSION = '.dat'
LOGEXTENSION = '.log'
INIFILE = 'TERATERM.INI'

; ユーザ情報格納ディレクトリ
USERINFODIR1 = DIR
strconcat USERINFODIR1 '\data'
USERINFODIR2 = USERINFODIR1
strconcat USERINFODIR2 '¥'

; ユーザファイル
USERNAMEFILE = USERINFODIR2
strconcat USERNAMEFILE LOGINUSERFILENAME
strconcat USERNAMEFILE FILEEXTENSION
USERNAMEPWFILE = USERINFODIR2
strconcat USERNAMEPWFILE LOGINPWFILENAME
strconcat USERNAMEPWFILE FILEEXTENSION

; ログ格納ディレクトリ
LOGDIR1 = DIR
strconcat LOGDIR1 '¥logs'
LOGDIR2 = LOGDIR1
strconcat LOGDIR2 '¥'
strconcat LOGDIR2 TODAY
LOGDIR3 = LOGDIR2
strconcat LOGDIR3 '¥'

; ユーザファイル
LOGFILE = LOGDIR3
strconcat LOGFILE NOW
strconcat LOGFILE LOGEXTENSION

; ユーザ情報格納ディレクトリチェック
foldersearch USERINFODIR1
if result = 0 then
    foldercreate USERINFODIR1
    if result <> 0 then
        ERRORCREATEDIR = 'ディレクトリ作成に失敗しました。パス='
        strconcat ERRORCREATEDIR USERINFODIR1
        messagebox ERRORCREATEDIR 'ディレクトリ作成エラー'
        end
    endif
endif

; ログ格納ディレクトリチェック
foldersearch LOGDIR1
if result = 0 then
    foldercreate LOGDIR1
    if result <> 0 then
        ERRORCREATEDIR = 'ディレクトリ作成に失敗しました。パス='
        strconcat ERRORCREATEDIR LOGDIR1
        messagebox ERRORCREATEDIR 'ディレクトリ作成エラー'
        end
    endif
endif

; ログ格納日付ディレクトリチェック
foldersearch LOGDIR2
if result = 0 then
    foldercreate LOGDIR2
    if result <> 0 then
        ERRORCREATEDIR = 'ディレクトリ作成に失敗しました。パス='
        strconcat ERRORCREATEDIR LOGDIR2
        messagebox ERRORCREATEDIR 'ディレクトリ作成エラー'
        end
    endif
endif

; ユーザ名、パスワード取得
getpassword USERNAMEFILE LOGINUSERFILENAME LOGINUSER
getpassword USERNAMEPWFILE LOGINPWFILENAME LOGINPW

; 接続コマンド作成
COMMAND = HOSTADDR
strconcat COMMAND ':22 /ssh /auth=password /user='
strconcat COMMAND LOGINUSER
strconcat COMMAND ' /passwd='
strconcat COMMAND LOGINPW
strconcat COMMAND ' /F='
strconcat COMMAND INIFILE

; 接続実行
connect COMMAND
if result <> 2 then
    ERRORHOST = 'ホストに接続できませんでした。ホスト='
    strconcat ERRORHOST HOSTADDR
    messagebox ERRORHOST '接続エラー'
    end
endif

; ログ取得開始
logopen LOGFILE 1 1

; 表示待ち
timeout = 10
wait LOGINUSER '@'
if result = 0 then
    disconnect
    end
endif

; マクロ終了
end
```

## 参考元
[Tera Term のススメ](http://ttm.jimba.ddo.jp/adiary.cgi/teraterm/index/macro/spec/cmd)
[TeraTerm自動ログ取得マクロ－ログ整理版(年月別)](https://www.j-oosk.com/teraterm/logging/566/)