echo here is a list of the users who have not logged in for a month
olduser="who | grep | -u, -q +30"
if $olduser
then
echo these users havent been logged in for thirty 30 days
else
echo user is active
;;
答え1
1つの提案...より徹底的で関連性の高い答えを得るには、次の質問を編集してください。
- オペレーティングシステム(つまり、Solarisはアカウント管理の点でRHELとは大きく異なります)
- スクリプト/コードタイプ(Bash、csh、kshなど)はスクリプトの一部であり、全体ではないように見えるため、shebang(#!/ bin / bashなど)。
私が最初に気づいたのは変数です$以前のユーザーコマンド置換に設定されていませんが、リテラル文字列に設定されました。「誰 | grep | -u, -q +30」
コマンドの置き換えは、通常、$(command_to_be_run)
または背中のバックティックを使用して行われます`command_to_be_run`
。私はあなたが探しているものではなく、上記のようにログファイルなどのwho
会計コマンドを見つける必要があると思います。logins
last
forループなどのユーザーのリストを作成し、最後と変数の置換を使用して各ユーザーの最後のログイン日を生成すると、そのユーザーが35日より古いかどうかを評価するif-then-fiステートメントなどの操作を実行できます。
たとえば、Solaris 10 では Bash を使用します。
LAST_LOGON_DATE=$(last $user | awk 'NR==1{print $5,$6}' | custom_date_convert_cmd )
if [[ ${LAST_LOGON_DATE} -ge 35 ]]; then
echo "${user} is expired. Last logon: ${LAST_LOGON_DATE} days ago"
important_commands_here
fi
明らかに、sed / perlは処理速度の観点からAWKよりも高速ですが、詰まっているために少し作業が必要な場合は、ここを始めるのに最適な場所かもしれません。
これには通常これを実行するコマンドが含まれているため、DISAでシステムSTIGを見つけます。ユーザーの最後のログイン、パスワードのないユーザーなどを確認してください。
https://www.stigviewer.com/stigs