linux - Shell Script-每个独特的用户

标签 linux bash shell

我有一个家庭作业:“对于每个唯一用户,报告他们属于哪个组以及他们上次登录的时间”

到目前为止我有:

#!/bin/sh

echo "Your initial login:"
who | cut -d' ' -f1 | sort | uniq

echo "Now is logged:"
whoami

echo "Group ID:"
id -G $whoami

case $1 in
   "-l") last -Fn 10 | tr -s " " ;;
   *)    last -Fn 10 | tr -s " " | egrep -v '(^reboot)|(^$)|(^wtmp a)|(^ftp)' | cut -d" " -f1,5,7 | sort -uM | uniq -c
esac

我的问题是:如何显示每个唯一用户?上面的脚本只显示最近登录系统的用户,但我需要所有唯一用户。

有人能帮忙吗?

最佳答案

脚本使用last

#!/bin/bash
while read user; do
  echo "User '$user':"
  echo -e "\t Last login: $(last -1R "$user" | awk 'NR==1{if($0 ~ /^$/){print "Never"}else{$1=$2="";print}}')"
  echo -e "\t Groups: $(getent group | awk -F: -v user="$user" '$0 ~ user{a[i++]=$1} END{for(item in a)printf("%s ", a[item])}')"
done < <(getent passwd | awk -F: '{print $1}')

输出

名字已更改以保护无辜者

User 'foo':
         Last login:  Oct 19 15:07:19 -0700 2010
         Groups: foo groupA groupB
User 'bar':
         Last login:  Nov 16 11:40:23 -0800 2008
         Groups: bar groupA groupC groupD
User 'baz':
         Last login: Never
         Groups: baz groupA groupD

关于linux - Shell Script-每个独特的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4650208/

相关文章:

python - 是否有可插拔的在线 python 控制台?

linux - Linux中通用的静态链接库

bash - 使用 "Sort"根据时间戳对终端中的 CSV 进行排序

linux - 如果找到零行,psql 返回代码

amazon-web-services - ec2实例启动时的AWS S3同步命令

linux - find -name "*.xyz"-o -name "*.abc"-exec 对所有找到的文件执行,而不仅仅是指定的最后一个后缀

python - socket.gethostbyaddr 返回未知主机

linux - 为什么 ls -l 中的 "total"不等于列出的总文件大小?

linux - Linux RHEL 上的 RabbitMQ 内部内存路径映射到另一个位置

linux - 列表命令不显示所有输出