2011-03-30 57 views
0

我想使用'last -t',然后按照YYYYMMDDHHMMSS格式将当前日期/时间传递给它。我知道如何获得当前日期/时间的唯一方法是通过“日期”,但它将以错误的格式传递回来。last -t command HELP

last-t还使用时间范围来显示自从时间框架以来谁已登录,我将如何从当前时间减去1分钟,当我将其转换为正确的格式时,该如何执行。

终于有一个命令显示那些退出登录?

+0

什么OS是你吗?在TTY的BSD'last -t'过滤器中,你似乎认为你有一个可以按时间过滤的'last'。 – 2011-03-30 18:07:33

+0

@Nick:快速谷歌发现这个:http://unixhelp.ed.ac.uk/CGI/man-cgi?last – 2011-03-30 18:09:45

+0

即时通讯测试它在Ubuntu最新版本。最后-t在我的手册页上请求YYYYMMDDHHMMSS格式。 – 2011-03-30 18:12:15

回答

0

看看date联机帮助页。您可以输出各种格式的日期和时间,包括您想要的格式。请记住引用这个论点。

对于减去1分钟,我个人使用Python和datetime模块,很容易对它进行时间计算。

不知道注销部分。

+0

这是需要shell脚本来执行此操作的类。它不是真正的功能=/ – 2011-03-30 18:14:56

0
1  NOW=`date` 
2  MINAGO=$((-1 + `date -d "$NOW" "+%Y%m%d%H:%M:%S" | cut -d: -f2 `)) 
3  MINAGO=`printf "%02i" $MINAGO` 
4  MINAGO=`date -d "$NOW" "+%Y%m%d%H:%M:%S"| sed s/:.*:/$MINAGO/`  
5  last -t $MINAGO 
  1. 存储时间在NOW
  2. 打印NOW作为YYYYMMDDHH:MM:SS,并提取MM,在MINAGO用零添加-1,存储
  3. 垫的最大长度是2(最后-t问为从现在开始08分钟不是8),储存MINAGO
  4. 打印时间和更换MINAGO,在MINAGO店
  5. 最后调用与YYYYMMDDHHMMSS分钟部分

您必须更加具体地说明退出者的含义,因为最后显示的是您已注销的用户以及他们何时执行了注销。如果他们还没有登录,他们就出局了。你还需要知道什么?不管怎么说,这是可以寻找在/ etc/shadow的真实账户和谁仍然记录在该列表中删除用户 例如:

getent shadow |sort -t: -k2,2 | awk -F: '($2 !="*") && ($2 !="!") { print $1 }' 

记住,只有root用户可以读取/ etc/shadow中


从头开始;

last -t $( 
      date -d @$((-60 + `date +%s`)) +%Y%m%d%H%M%S 
     ) 
| grep still 

e.g

$ last -t $(date -d @$((-60 + `date +%s`)) +%Y%m%d%H%M%S) | grep still 
* pts/4 * Sat Sep 7 02:20 still logged in 
* pts/44 * Fri Sep 6 19:08 still logged in 
* pts/8 * Fri Sep 6 11:26 still logged in 
* pts/32 * Fri Sep 6 09:37 still logged in 
* pts/60 * Wed Sep 4 08:06 still logged in 
* pts/34 * Tue Sep 3 23:26 still logged in 
* pts/5 * Tue Sep 3 12:38 still logged in 
* pts/37 * Mon Sep 2 10:59 still logged in 
* pts/46 * Sun Sep 1 21:29 still logged in 
+1

第2步可能会变得有趣,如果它碰巧是17:00(或任何其他时间'%M'给出0输出)... – twalberg 2013-09-05 13:39:24