首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在linux中显示从今天起恰好5天前登录的用户列表?

在linux中显示从今天起恰好5天前登录的用户列表?
EN

Stack Overflow用户
提问于 2013-12-11 01:15:22
回答 3查看 2.6K关注 0票数 1

last命令显示登录尝试的历史记录。如何过滤输出,使其显示当前日期之前5天内登录的用户?

以下是我到目前为止所能做到的:

代码语言:javascript
复制
last | grep Dec | grep -v reboot | awk '{print$5}'

这将从上一条命令的输出中解析日期。

代码语言:javascript
复制
#!/bin/bash
     count=`$date "+%d"`
     count=$((count-5))
     last|grep -v reboot|grep Dec|awk '($5>=$count) {print $0}' 

对我很有用:)谢谢你的帮助@Olivier Dulac

EN

回答 3

Stack Overflow用户

发布于 2013-12-11 05:08:54

我无法在一行中完成,但这里有一个小的bash脚本,它可能会完成这项工作:

代码语言:javascript
复制
#! /bin/bash

# Find the date string we want
x=$(date --date="5 days ago" +"%a %b %e");

# And now chain a heap of commands together to...
#   1. Get the list of user
#   2. Ignore reboot
#   3. Filter the date lines we want
#   4. Print the user name using awk
#   5+6. Sort them and extract the unique values
last | grep -v "reboot" | grep "$x" | awk '{print $1}' | sort | uniq
票数 1
EN

Stack Overflow用户

发布于 2013-12-11 01:31:54

在你的awk中(我这里没有"last“,所以我不知道格式)只需添加一个条件,当你看到你想要的东西时,只打印整行:

例如:如果月份是第3个字段,天是第4个字段,

代码语言:javascript
复制
last | grep -v reboot | awk ' ( ($3 == "Dec") && ($4 == "07") ) { print $0 ; }'

(再说一次,如果没有"last“的实际摘录,我不知道上面的方法是否有效,但我希望您能大致了解)

票数 0
EN

Stack Overflow用户

发布于 2013-12-11 20:37:48

我认为chooban的解决方案是最接近的,但它只列出了匹配的行。我找到了一个更好的解决方案,最有可能的是它正确地处理了2013-12-31 - 2014-01-01问题(如果用户登录超过一年,或者登录时间在前一年,我没有发现输出格式的痕迹)。它是一个grep-less one (长)行:

代码语言:javascript
复制
last | awk -v l="$(last -t $(date -d '-5 day' +%Y%m%d%H%M%S)|head -n 1)" 'BEGIN {l=substr(l,1,55)} /^reboot / {next} substr($0,1,55) == l  {exit} 1

我假设没有像“reboot”这样的用户。它使用last -t YYYYMMDDHHMMSS打印特定日期之前的行的事实,但不幸的是,如果注销在指定的时间段内(显示"gone - no logout"),它会更改格式,因此必须将其截断。

这不是最好的,因为它调用最后两次,但它似乎工作。

输出:

代码语言:javascript
复制
root     pts/1        mytst.xyzzy.tv   Wed Dec 11 12:45   still logged in   
root     pts/0        mytst.xyzzy.tv   Wed Dec 11 11:25   still logged in   
root     pts/0        mytst.xyzzy.tv   Tue Dec 10 16:02 - 17:14  (01:12)    
root     pts/0        mytst.xyzzy.tv   Tue Dec 10 10:59 - 15:04  (04:05)    
root     pts/0        mytst.xyzzy.tv   Mon Dec  9 13:23 - 17:10  (03:46)    
root     pts/1        mytst.xyzzy.tv   Fri Dec  6 16:01 - 16:07  (00:06)    
root     pts/0        mytst.xyzzy.tv   Fri Dec  6 15:52 - 16:08  (00:15)

我希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20500939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档