はじめに
大量のサーバで同じような作業をするのは病みますよね・・・
その時のために、teratermで使えるツールを作りました
たまにしかteratermマクロを触らないので、コピペ用に置いておければなと思い投稿しました
環境
環境 | |
---|---|
Windows 10 home | |
teraterm | v.4.104 |
MS-DOS |
検証
バッチからマクロを呼び出し、複数サーバに対して処理を実行します。
マクロ呼び出し元バッチ
teratermExec.bat
@echo off
REM ======================================
REM teratermマクロ呼び出し
REM ======================================
setlocal
cd /d %~dp0
set chdir=%~dp0
REM 変数定義
set ttMacroExe="ttpmacro.exeのパス"
set ttMacroPath=%chdir%teratermMacro.ttl
set logDir=%chdir%ttlLog
REM ログ出力ディレクトリ作成
if not exist %logDir% (
md %logDir%
)
REM マクロ実行ラベルの呼び出し
call :doMacro 192.168.0.1 root password
call :doMacro 192.168.0.2 root password
endlocal
exit /b
REM -------------
REM マクロ呼び出し
REM -------------
:doMacro
set ipaddr=%1
set username=%2
set password=%3
set logFile=%logDir%¥%ipaddr%_%date:/=%_%time::=%.log
echo %date% %time% [INFO] %ipaddr% ログ保存先:%logFile%
REM teratermマクロ呼び出し
call "%ttMacroExe%" %ttMacroPath% %ipaddr% %username% %password% %logFile%
exit /b
テラタームマクロ
teratermMacro.ttl
; ======================================
; 引数1:実行マクロ名
; 引数2:IPアドレス
; 引数3:ログインユーザ名
; 引数4:ログインパスワード
; 引数5:ログファイル名
; ======================================
; タイムアウトを設定
timeout=15
; 引数チェック
if paramcnt !=5 then
messagebox '引数は5つ必要です'
end
endif
; 引数代入
TTLNAME = param1
HOSTADDR = param2
USERNAME = param3
PASSWORD = param4
LOGNAME = param5
; コマンオプション組み立て
msg = HOSTADDR
strconcat msg ' :22 /ssh /auth=password /user='
strconcat msg USERNAME
strconcat msg ' /passwd='
strconcat msg PASSWORD
; 接続
connect msg
if result <> 2 then
messagebox '接続失敗' 'connection err'
end
endif
; ログ出力指定
Loginfo NOW_LOGIFLE
if result <> -1 then
logclose
filecopy NOW_LOGIFLE LOGNAME
filedelete NOW_LOGIFLE
endif
logopen LOGNAME 0 1 1 1
; コマンド実行
wait '#'
sendln 'date'
wait '#'
sendln 'set -o vi;alias ll="ls -lFa"'
wait '#'
sendln 'df -m'
wait '#'
sendln 'w'
wait '#'
sendln 'who'
; テストコマンド実行
; ・・・・・実行したいコマンドを列挙
; teraterm終了
wait '#'
sendln 'exit'
end
まとめ
クライアントソフトを大量のサーバにインストールしたり、それのパラメータ確認用資料を収集してきたり、動作確認したりといろんな場面で使えるかなと思います。