sshを自動化したかったのと、コンソール(画面)の内容をテキストで勝手に保存されておいてほしかったので、マクロテンプレートを作成しました。
コードの冒頭5箇所に値を設定すれば、あとはコピペで使えるようにしてあります。
参考
参考にしたのは以下のページです。
マクロ実装
コードをコピペして「====」で囲まれている部分(HOSTADDR
,PORTNUMBER
,USERNAME
,PASSWORD
,LOG_DIR
)を設定すればそのまま使用できます。
LOG_DIR
に指定した出力先へttl_user_20240401-103059.log
といった名前のログファイルが生成されます。
ssh認証方式がパスワード認証である場合を想定して作成してあります。
パスワード認証以外の認証方法が必要な場合、コードを使う前に編集する必要があります。
サーバログイン(ssh接続成功)後に自動化したい処理がある場合、コード中盤の;コマンド送信処理 ここから
の下に記入してください。良く使うディレクトリに移動したり、シェル実行をしたりすることも可能です。
ssh接続.ttl
;=====================================================================
; 接続情報を設定する
HOSTADDR = '127.0.0.1'
PORTNUMBER = '10000'
USERNAME = 'user'
PASSWORD = 'password'
; ログ出力先を指定する。末尾に\は不要
LOG_DIR = 'C:\Users\user\Documents'
;=====================================================================
; コマンドオプション組立て
COMMAND = HOSTADDR
strconcat COMMAND ':'
strconcat COMMAND PORTNUMBER
strconcat COMMAND ' /ssh /2 /auth=password /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /passwd='
strconcat COMMAND PASSWORD
; 接続
connect COMMAND
wait USERNAME
; コマンド送信処理 ここから
; ここに自動化したい初期処理を記入
;cd /opt
; コマンド送信処理 ここまで
; 日時を取得
gettime CURRENT_TIME "%Y%m%d-%H%M%S"
; ログファイル名生成とパス結合
sprintf2 FILE_NAME '%s\ttl_%s_%s.log' LOG_DIR USERNAME CURRENT_TIME
loginfo logfilename
if result == -1 then
; ログ取得開始
logopen FILE_NAME 0 1 0 1 1
else
; ログ取得中であるため一度クローズしてからログ取得開始
logclose
logopen FILE_NAME 0 1 0 1 1
endif
end
自動化する内容やテンプレート化に向けて改良を重ねて今の形に落ち着きました。
地味に面倒だった作業を自動化できてすっきりした気持ちです。