ローカルユーザーとパスワードの有効期限を出力するスクリプトの作成

ローカルユーザーとパスワードの有効期限を出力するスクリプトの作成

ローカルユーザーの実際の名前とパスワードの有効期限情報を出力するスクリプトを作成する必要があります。

これが私が今持っているものです。どんな助けでも大変感謝します。

$ cat /etc/passwd | grep '/home' | cut -d: -f5 ;chage -l {} | \
    fgrep "Password expires"'| column -t

ベストアンサー1

ローカルユーザーを取得するより良い方法は、ユーザーに有効なログインシェルがあることを確認することです。

getent passwd | grep -f /etc/shells

どのように機能するかは次のとおりです。

getent passwd | grep -f /etc/shells | tr ',' ':' | \
    awk -F: '{print $1, $5}' | while read USER NAME 
    do 
        echo $NAME:$(chage -l $USER| awk -F': ' '/Password expires/{print $2}')
    done | column -ts: 

これを使用して、xargs次の操作を実行できます。

getent passwd | grep -f /etc/shells | tr ',' ':' | awk -F: '{print $1, $5}' | \
    xargs -L1 bash -c 'echo ${@:2}:$(chage -l $1| awk -F": " "/Password expires/{print \$2}")' : | \
    column -ts: 
  • tr次に、置換を使用すると、GECOSフィールドから直接フルネームを抽出できます,:
  • column入力区切り文字を提供し、1つの-s列に複数の単語の名前を保持できます。
  • -L使用xargsするワイヤーユーザー名とフルネームが各コマンドに渡されるように、各コマンドに入力します。
  • ${@:2}- 2番目の引数で始まるすべての引数(最初の引数をスキップ)

出力例:

root                      never
Murukesh Mohanan          never
Guest                     never

おすすめ記事