Jaime Cifuentes wrote:
My customer is planning a migration of OpenAFS to a different filesystem platform and is requesting information about when was the last time usernames accessed AFS. We use "kas" as an authentication method and I have not found any way to display that information. Is there such a possibility? We can find when the password was last changed with "kas e", but is all I can see.

As Russ pointed out its in the logs, at least for the last few weeks.
Look at the attached script that will show by host kas access and last access.




Jaime Cifuentes
DCE/DFS-AFS Support, Hitachi


--

 Douglas E. Engert  <deeng...@anl.gov>
 Argonne National Laboratory
 9700 South Cass Avenue
 Argonne, Illinois  60439
 (630) 252-5444
#!/bin/bash
# get klog stats for selected users
#
# option $1 old get last weeks AuthLog.old
#
#

LOG=/tmp/get.klog.stats.log
TMP=/tmp/get.klog.stats.tmp

# $1 is hex string like 928960a0
# HOST is set the hostname
HexIpToHost()
{
    local UADDR
    local DADDR

    UADDR=`echo "$1" | tr "[a-f]" "[A-F]"`
    DADDR=`echo "ibase=16; a=$UADDR; " \
        "d=a%100; a=/100; c=a%100; a=/100; b=a%100; a=/100;"\
        "a;b;c;d"| bc | sed -e 'N;N;N;s/\n/./g'`
    HOST=`dig +short -x $DADDR | sed -e 's/[.]$//'`
}

####### MAIN #######
if [ "X$1" = "Xold" ] ; then
        LOGVER=".old"
fi
LOG=/tmp/get.klog.stats$LOGVER.log
TMP=/tmp/get.klog.stats$LOGVER.tmp

rm $LOG 2>/dev/null
rm $TMP 2>/dev/null
touch $LOG

#       | sed -e 's?^\([^ ]* [^ ]* \) \([0-9]\)?\10\2/' \
#       -e 's?^\([^ ]* [^ ]* \) \([0-9]\)?\10\2/' >> $LOG
AFSSERVERS="list of your AFS database servers"
for S in $AFSSERVERS
do
bos getlog $S AuthLog$LOGVER > /tmp/dee.test.$S
        bos getlog $S AuthLog$LOGVER | grep ",afs:[a-z][a-z][a-z][a-z] from" \
        | sed \
                -e 's?^\([^ ]* [^ ]* \) \([0-9]\)?\10\2?' \
                  -e 's?^\([^ ]* \)Jan ?\101 ?' \
                  -e 's?^\([^ ]* \)Feb ?\102 ?' \
                  -e 's?^\([^ ]* \)Mar ?\103 ?' \
                  -e 's?^\([^ ]* \)Apr ?\104 ?' \
                  -e 's?^\([^ ]* \)May ?\105 ?' \
                  -e 's?^\([^ ]* \)Jun ?\106 ?' \
                  -e 's?^\([^ ]* \)Jul ?\107 ?' \
                  -e 's?^\([^ ]* \)Aug ?\108 ?' \
                  -e 's?^\([^ ]* \)Sep ?\109 ?' \
                  -e 's?^\([^ ]* \)Oct ?\110 ?' \
                  -e 's?^\([^ ]* \)Nov ?\111 ?' \
                  -e 's?^\([^ ]* \)Dec ?\112 ?' \
                  -e 's?^\([^ ]*\) \([^ ]*\) \([^ ]*\) \([^ ]*\) \([^ 
]*\)?\5/\2/\3-\4 \1?'
done \
 | sort > $LOG

# $1 is hex string like 928960a0
# HOST is set the hostname
HexIpToHost()
{
        local UADDR
        local DADDR

        UADDR=`echo "$1" | tr "[a-f]" "[A-F]"`
        DADDR=`echo "ibase=16; a=$UADDR; " \
                "d=a%100; a=/100; c=a%100; a=/100; b=a%100; a=/100;"\
                "a;b;c;d"| bc | sed -e 'N;N;N;s/\n/./g'`
        HOST=`dig +short -x $DADDR | sed -e 's/[.]$//'`
}


grep ",afs:" $LOG | sed \
  -e 's/^.* \([^ ,]*\),afs:.* from \([0-9a-f]*\)$/\1 \2/' \
  | sort | uniq -c > $TMP

while read COUNT NAME HADDR ; do

        HexIpToHost $HADDR

        LAST=`grep "$NAME,afs:.* from $HADDR" <$LOG\
                | tail -1 | sed -e 's/^\(.*\)'$NAME',afs:.*$/\1/'`

printf "%5s %-15s %s %-25s %s\n" $COUNT $NAME $HADDR $HOST "$LAST"

done < $TMP

        

 

Reply via email to