全Linuxサーバの長期間使用されていないユーザを確認するマクロ

本ページでは全Linuxサーバの長期間使用されていないユーザを確認するマクロを紹介します。

本マクロの用途

全Linuxサーバの長期間使用されていないユーザをログに出力します。ユーザー棚卸などの際に利用します。

なお、本マクロは全Linuxサーバのlastlogをログに出力するだけの動作のため、そのままだと人間の手で最終ログイン履歴を確認しなければなりません。 別途Excel VBAなどを利用して全サーバで一定期間を超えて使われていないユーザが存在しないか確認するツールを作成すると良いでしょう。

詳しくは本HPのExcel(VBA)をご覧下さい。

本マクロの仕様

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

全てのサーバにログインし、lastlogをログに記入して行きます。記入完了後、サーバからログアウトします。

本マクロの注意事項

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

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

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

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

また、/etc/passwdにてnologin(ログインしない)が設定されているシステムユーザ等は、当然ログイン履歴もありません。

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

コード

;#################################################################
;全Linuxサーバ全ユーザ確認マクロ
;作成日:yyyymmdd
;作成者:wildfish
;更新日:yyyymmdd
;更新者:wildfish
;説明:全Linuxサーバの長期間使用されていないユーザをログに出力します。
;踏み台(入り口)サーバに指定のユーザでログイン後、操作ログを以下に保存します。
;D:¥temp¥work¥ttmacro¥ttlog¥yyyymmdd_hhmmss.txt
;全てのサーバにログインし、lastlogをログに記入して行きます。
;記入完了後、サーバからログアウトします。
;#################################################################

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

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

:loop
filereadln fhandle line
if result goto fclose

logoncommand = 'ssh '
strconcat logoncommand username
strconcat logoncommand '@'
strconcat logoncommand line

sendln logoncommand
wait 'password:'
sendln Password

wait ' ~]$'
sendln 'lastlog'
wait ' ~]$'
sendln 'exit'
wait' ~]$'
goto loop
endif

:fclose
fileclose fhandle

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

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

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

tera term macroリスト

メニュー

ページのトップへ戻る