全Linuxサーバのパスワードを一気に変更するマクロ

本ページでは全Linuxサーバのパスワードを一気に変更するマクロを紹介します。

本マクロの用途

複数あるLinuxサーバのパスワードを全て変更します。

本マクロの動作完了後、変更後のパスワードで全Linuxサーバにログインできるか確認するマクロでログイン確認をすることで、正常にパスワードが変更されているか確認することが可能です。

本マクロの仕様

踏み台(入り口)サーバに指定のユーザでログイン後、操作ログをD:¥temp¥work¥ttmacro¥ttlog¥yyyymmdd_hhmmss.txtに保存します。

ポップアップが出力し、変更対象のユーザー名、変更前パスワード、変更後パスワードの入力を求められます。

入力完了後、D:¥temp¥work¥ttmacro¥list¥hostlist.txtに記載のあるホスト全てにログインしてパスワードを変更します。

パスワード変更後、ログに「mission completed」の文字列を出力し、サーバからログアウトします。

本マクロの注意事項

本マクロの前提条件として、D:¥temp¥work¥ttmacro¥list¥hostlist.txtに記載のあるサーバ全てに変更対象のユーザが存在する必要があります。 (例えばhostlist.txtに記載のあるサーバのうち、1サーバだけ変更対象のユーザが存在しないなどの場合、そのサーバ及びそのサーバよりhostlist内の下に記載されているサーバに対しては、パスワード変更ができません。)

D:¥temp¥work¥ttmacro¥list¥hostlist.txtに、パスワードを変更したいサーバを記入して下さい。なお、本listファイルは変更後のパスワードで全Linuxサーバにログインできるか確認するマクロと共有で使用することで、漏れなくログイン確認を行うことが可能です。

D:¥temp¥work¥ttmacro¥list¥hostlist.txtは以下の形式で1ホスト毎に改行して下さい。

ホスト名1(IPアドレスでも可)
ホスト名2(IPアドレスでも可)
ホスト名3(IPアドレスでも可)

マクロの配置やログの出力先、仕様などのその他共通注意事項は当サイトで扱うtera termマクロの共通ルールをご確認下さい。

コード

;#################################################################
;全Linuxサーバパスワード変更マクロ
;作成日:yyyymmdd
;作成者:wildfish
;更新日:yyyymmdd
;更新者:wildfish
;説明:複数あるLinuxサーバのパスワードを全て変更します。
;踏み台(入り口)サーバに指定のユーザでログイン後、操作ログを以下に保存します。
;D:¥temp¥work¥ttmacro¥ttlog¥yyyymmdd_hhmmss.txt
;ポップアップが出力し、変更対象のユーザー名、変更前パスワード、
;変更後パスワードの入力を求められます。
;入力完了後、D:¥temp¥work¥ttmacro¥list¥hostlist.txtに
;記載のあるホスト全てにログインしてパスワードを変更します。
;パスワード変更後、ログに「mission completed」の文字列を出力し、
;サーバからログアウトします。
;#################################################################

;#################################################################
;ログイン、接続処理
;#################################################################

username = 'ユーザ名';←踏み台サーバのログインするユーザ名を記入します
hostname = 'ホスト名';←踏み台サーバのホスト名またはIPを記入します

msg = 'passwordを入力'
passwordbox msg 'Get password'
Password = inputstr

msg = hostname
strconcat msg ':22 /ssh /auth=password /user='
strconcat msg username
strconcat msg ' /passwd='
strconcat msg Password

connect msg

settitle"全Linuxサーバパスワード変更マクロ"

;#################################################################
;操作ログの自動保存処理
;#################################################################

getdate datestr
strcopy datestr 1 4 yearstr
strcopy datestr 6 2 monthstr
strcopy datestr 9 2 daystr
gettime timestr
strcopy timestr 1 2 hourstr
strcopy timestr 4 2 minutestr
strcopy timestr 7 2 secondstr

filename = 'D:¥temp¥work¥ttlog¥'
strconcat filename yearstr
strconcat filename monthstr
strconcat filename daystr
strconcat filename '_'
strconcat filename hourstr
strconcat filename minutestr
strconcat filename secondstr
strconcat filename '.txt'

logopen filename 0 0

wait ' ~]$';←一般ユーザのwaitです。rootの場合' ~]#'を指定します。

;#################################################################
;作業担当者出力
;#################################################################
inputbox '作業者名を半角英小文字で入力' '作業担当者名入力画面'
Sagyotan = inputstr
echotan = 'echo '
strconcat echotan Sagyotan
sendln echotan
wait ' ~]$'
;#################################################################
;作業担当者出力終了
;#################################################################

;#################################################################
;ホストリスト読み込み~ログインのループ開始
;#################################################################
fileopen fhandle 'D:¥temp¥work¥ttmacro¥list¥hostlist.txt' 0

inputbox '変更対象ユーザ名' '確認対象ユーザ名入力画面'
Kakuusr = inputstr

inputbox '変更前のパスワード入力' 'パスワード入力画面'
Kakupass = inputstr

inputbox '変更後のパスワード入力' 'パスワード入力画面'
Newpass = inputstr

:loop
filereadln fhandle line
if result goto fclose

logoncommand = 'ssh '
strconcat logoncommand Kakuusr
strconcat logoncommand '@'
strconcat logoncommand line

sendln logoncommand
wait 'password:'
sendln Kakupass

;#################################################################
;rootの場合とそれ以外でwait文字列・コマンド分岐
;#################################################################
strcompare Kakuusr 'root'
if result = 0 goto waitroot

;#################################################################
;root以外の場合
;#################################################################
wait ' ~]$'
sendln 'passwd'
wait '(current) UNIX password:'
sendln Kakupass
wait 'New password:'
sendln Newpass
wait 'Retype new password:'
sendln Newpass
wait ' ~]$'
sendln 'exit'
wait' ~]$'
goto loop
endif

;#################################################################
;rootの場合
;#################################################################
:waitroot
wait ' ~]#'
sendln 'passwd'
wait 'New password:'
sendln Newpass
wait 'Retype new password:'
sendln Newpass
wait ' ~]#'
sendln 'exit'
wait' ~]$'
goto loop

:fclose
fileclose fhandle

;#################################################################
;ループ終了
;#################################################################

;#################################################################
;終了メッセージ出力
;#################################################################

sendln 'echo MISSION COMPLETED'
wait' ~]$'
sendln 'exit'
;#################################################################

tera term macroリスト

メニュー

ページのトップへ戻る