【TeraTermMacro】複数のホストへ秘密鍵を使用したSSHの接続
以下のコードで可能です。
:ユーザーIDの指定
USERNAME = 'administrator'
:秘密鍵のフルパスを指定
KEYFILE = 'C:\Users\*******\Desktop\ws153a\WinShat.txt'
:root権限のパスワードを指定
ROOTPASSWORD = ''
:ログファイルの出力するフォルダパスを指定
LOG_PATH = 'C:\Users\*****\Desktop\ws153a'
:strdimで数字毎の値を設定
NUMBER = 3
strdim HOSTADDR NUMBER
HOSTADDR[0] = '192.168.1.1'
HOSTADDR[1] = '192.168.1.2'
HOSTADDR[2] = '192.168.1.3'
strdim HOSTNAME NUMBER
HOSTNAME[0] = 'adm001-WebAP-001'
HOSTNAME[1] = 'adm001-WebAP-002'
HOSTNAME[2] = 'adm001-WebAP-003'
getdate NOW_DATE '%Y%m%d'
getdate NOW_TIME '%H%M%S'
:コマンドを実行する際に、タイムアウトで実行を防止
timeout = 0
:SSHの接続をする際に必要なユーザー情報を「USERNM」へ格納して、値が未入力の場合はマクロが強制終了
inputbox 'UserID' '自身のユーザーIDを選択してください。' USERNAME
USERNM = inputstr
strlen USERNM
if result == 0 then
messagebox 'UserName information is not input.' 'Input Error'
end
endif
inputbox 'KeyPath' '秘密鍵のファイルのフルパスを入力してください。' KEYFILE
KEY = inputstr
strlen KEY
if result == 0 then
messagebox 'KeyFile information is not input.' 'Input Error'
end
endif
inputbox 'RootPassword' 'ROOT権限のパスワードを入力してください。' ROOTPASSWORD
ROOT = inputstr
strlen KEY
if result == 0 then
messagebox 'RootPassword information is not input.' 'Input Error'
end
endif
:前述の「strdim」で指定した変数の各数字を繰り返し処理で指定
for j 0 2
:「HOSTADDR」の『j』の数字毎にSSHで接続
COMMAND = HOSTADDR[j]
strconcat COMMAND ':22 /ssh /2 /auth=publickey /user='
strconcat COMMAND USERNM
strconcat COMMAND ' /keyfile='
strconcat COMMAND KEY
connect COMMAND
:前述の「connect」ができない場合、マクロを強制終了
if result <> 2 then
messagebox 'it could not be connected.' 'Connection Error'
end
endif
:ログの設定
FULLPATH = LOG_PATH
getdate LOG_NAME '_&h_.log'
strconcat FULLPATH HOSTNAME[j]
strconcat FULLPATH '_'
strconcat FULLPATH NOW_DATE
strconcat FULLPATH '_'
strconcat FULLPATH NOW_TIME
strconcat FULLPATH '_'
strconcat FULLPATH LOG_NAME
LOG_FULLPATH = FULLPATH
logopen LOG_FULLPATH 0 0
:SSHでログインした場合、自動でコマンドを実行するには、必ず最初に『wait '$'』が必要です。
wait '$'
:root権限に移行のコード
sendln 'sudo su -'
wait 'パスワード'
sendln ROOT
wait '#'
:自動化したコマンドの実行を、一時的に止めるコード
messagebox 'idコマンドを使用しますが大丈夫でしょうか?' 'Check!'
sendin 'id'
wait '#'
pause 1
:すべてのコマンドの実行が完了した場合、対象のホストのコンソールを閉じるコード
sendln 'exit'
wait '$'
sendln 'exit'
:繰り返し処理で変数が残存しないように、対象の変数の値をクリア
FULLPATH = ''
LOG_FULLPATH = ''
:設定したログを閉じる
logclose
:現在、SSHで接続しているホストの接続の非同期(同期を外す)
unlink
:『for j 0 2』のコードから処理を「0→1→2」の順番で繰り返す。
next
この記事が気に入ったらサポートをしてみませんか?