0
1

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 2020-08-14

#自動化が叫ばれる昨今いかがお過ごしですか?
##作成の経緯
2020年 8月初旬 1500個のcommandをUbuntuに連続発行するという絶望的な作業が舞い込んだ。
あーめんどくせーAnsible PlayBookとかめんどくせーよと、スイカバー食べながら思った。
あ、そうだ別にTeraTermでいいじゃん! と思い作りましたので、備忘かねて記載しました。

##要件
・テキストファイルに記載しているcommandを1行づつ実行したい。
・ついでにログの自動でとってもらおう

##コード



;======================================================
;teratermマクロ
;コマンドファイルを読み込み順次実行するマクロです。
;
;コマンドファイル順次実行時、プロンプト出力を待ってから
;次のコマンドを実行するか、 指定時間ポーズするかを選択できます。
;コマンドファイル実行前に、デフォルトで最初に実行したい
;コマンドも記載可能
;ログを自動で取得します。
;======================================================

;-----------------------------------------------------------
;初期設定
;-----------------------------------------------------------

;ログ自動保存
;ログ保存先
LOGSPATH = 'C:\test\log\'

;ログファイル名
getdate LOG_NAME 'teraterm(&h)_%Y%m%d_%H%M%S.log'

FULLPATH = LOGSPATH
strconcat FULLPATH LOG_NAME

;ログ取得開始
logopen FULLPATH 1 1

;タイトル設定
settitle 'コマンドファイルの順次実行マクロ'

;コマンドファイル※commandを羅列しているファイルをフルパス指定
cmdfile = 'C:\Users\test\Desktop\apt-get.txt'

;コマンドファイル順次実行時、プロンプト出力を待つか(1)
;指定時間ポーズするか(1以外)、どちらかを設定
wait_prompt_f = 0

;プロンプト※表示プロンプトに合わせて編集
wait_prompt = 'test@testvm:~$'

;ポーズタイム(s)
pause_time = 1

;-----------------------------------------------------------
;デフォルトで最初に実行したいコマンド
;-----------------------------------------------------------

default_input = 1 ;無ければ0にする

if default_input = 1 then
sendln 'date'
sendln 'whoami'
sendln 'hostname'
sendln 'pwd'
endif

;-----------------------------------------------------------
;コマンドファイルの順次実行
;-----------------------------------------------------------
;ファイルオープン
fileopen fh cmdfile 0

;ファイル内の実行行数
count = 1

while 1
;コマンドファイルから1行読み込み
filereadln fh buf

;読み込めない時はループを抜ける
if result goto breakloop

;ファイル内の実行行数表示
int2str count_str count ;数値を文字に変換
sendln '### ' count_str ' 行目を実行します ###'

;コマンド実行
sendln buf

if wait_prompt_f = 1 then
;プロンプト出力を待つ
wait wait_prompt
else
;指定時間ポーズする
pause pause_time
endif

count = count + 1
endwhile

:breakloop

;ファイルクローズ
fileclose fh

sendln

###おわりに
Ansible等とは違いEngineもいらずに使えるので、とても楽ちんでした。
運用等で例えば仮想マシン払い出し作業を自動化(カタログ化)するのは、
やはりAnsible(Tower)とかが必要だが、簡単に済ませたい場合は
TeraTermマクロも捨てたもんじゃないなぁと感じた出来事でした。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?