5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

teratermマクロで複数サーバ作業を自動化

Last updated at Posted at 2019-12-07

はじめに

大量のサーバで同じような作業をするのは病みますよね・・・
その時のために、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

まとめ

クライアントソフトを大量のサーバにインストールしたり、それのパラメータ確認用資料を収集してきたり、動作確認したりといろんな場面で使えるかなと思います。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?