パスワードの最終更新日付を取得する2010/05/05 |
パスワードの最終更新日付を取得します。
特にどうとゆうことはない、「chage -l user」ですぐ出るのですが、
筆者が個人的に「パスワードの最終更新日付を出せないか」
と聞かれ、一発で一覧で出す方法を考えてみた結果のメモ書きです。
|
|
[1] | パイプでだらだらとつなげば一応、一発で出ます。 |
[root@dlp ~]# cut -d: -f1 /etc/passwd | while read line; do echo -n $line; chage -l $line | head -1 | awk -F: '{print $2}'; done root Sep 12, 2009 bin Sep 12, 2009 daemon Sep 12, 2009 adm Sep 12, 2009 hiroyuki Sep 30, 2009 postfix Oct 17, 2009 |
[2] | Linuxであれば上記でよいが、Solaris などで chage がなかったらどうしよう・・・となると、chage を使わず、 /etc/shadow から直接計算して出す方がよいかも・・・と思いたち、chage は使わないようにします。 ついでにパイプでつなぐのは長いので、シェルスクリプト化します。 さらについでに、パスワードなし等でログイン不可のアカウントは出力しないようにすることで 落ち着きました。 |
[root@dlp ~]#
vi lastchange.sh #!/bin/sh IFS=: today=`expr \`date +%s\` / 60 / 60 / 24` while read a b c d e f g h i; do if [ "$b" != '*' -a "$b" != '!!' ]; then last=`expr $today - $c` echo "$a = `date --date "-$last day" +%Y/%m/%d`" fi done < /etc/shadow chmod 700 lastchange.sh [root@dlp ~]# ./lastchange.sh root = 2009/09/12 cent = 2009/09/14 hiroyuki = 2009/10/20 |