#!/bin/rc # # last login of user, # with an arg it prints only matching entries. # rfork e rd=cat if (! ~ $#* 0) rd=(grep ' ' ^$"*) tail -1000 /sys/log/auth | $rd | awk ' $5=="tr-ok" && $NF ~ ".*@bootes"{ uid = $NF; gsub("@.*$", "", uid); last[uid] = $2 " " $3 " " $4; gsub(":[0-9][0-9]$", "", last[uid]); ip = $6; gsub("^.*\\(", "", ip); gsub("\\).*$", "", ip); from[uid] = ip; } END{ cmd = "ls -ltu /usr/*/lib/profile"; while(cmd | getline){ uid = $NF; gsub("^.*/usr/", "", uid); gsub("/lib/profile$", "", uid); if(last[uid] == "") last[uid] = $7 " " $8 " " $9; } close(cmd); for(i in last) printf("%-20s %-16s %s\n", i, last[i], dnsquery(from[i])); } function dnsquery(s) { cmd="echo " s " | /bin/ndb/dnsquery"; cmd|getline; close(cmd); if($3 == "ptr") return $NF; return s; } '