免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3181 | 回复: 14
打印 上一主题 下一主题

last命令取得日期的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-20 16:19 |只看该作者 |倒序浏览
前几天碰到个需求,last命令可以显示用户登录的时间,但是需求要求的是只需要看最近30天的,其余的不用显示
比如:
ctmuser   pts/5        182.245.111.52         Nov 30 15:25 - 15:31  (00:05)
root      ftp          182.245.111.52         Nov 30 15:14 - 15:29  (00:15)
root      pts/3        182.245.111.52         Nov 30 14:44 - 16:04  (01:20)
root      pts/3        182.245.111.52         Nov 30 14:30 - 14:31  (00:01)
root      pts/3        182.245.111.52         Nov 30 14:21 - 14:30  (00:09)
root      pts/3        182.119.118.197        Nov 30 14:15 - 14:17  (00:01)

我可以根据Nov 30 来判断距离现在的时间,但是如果遇到跨年的情况的话,就没有办法了,这命令里不显示年份
这样的话该如何是好呢?还请各位指教

论坛徽章:
0
2 [报告]
发表于 2010-07-20 16:56 |只看该作者
比较啊

如果当前行是Dec,下一行是Jan那就跨年了嘛

论坛徽章:
0
3 [报告]
发表于 2010-07-20 16:56 |只看该作者
去研究下btmp和utmp或last的格式,看看有没有关于时间参数的。

另外,想到一个笨办法,你每天(crond)运行个last,把当天的记录追加保存到某个文件,格式在last基础上加个年份

--_--

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2010-07-20 19:43 |只看该作者
  1. M1=`date +%b`
  2. M2=`TZ=TZ+672 date +%b`
  3. M3=`TZ=TZ+720 date +%b`
  4. D3=`TZ=TZ+720 date +%d`
  5. if [ $M1 == $M3 ]; then
  6.         last |awk -v m3=$M3 -v d=$D3 '$5<d||$4!=m3{exit};1'
  7. else
  8.         if [ $M2 == $M3 ]; then
  9.                 last |awk -v m1=$M1 -v m3=$M3 -v d=$D3 '($4==m3&&$5<d)||($4!=m1&&$4!=m3){exit};1'
  10.         else
  11.                 last |awk -v m1=$M1 -v m2=$M2 -v m3=$M3 -v d=$D3 '($4==m3&&$5<d)||($4!=m1&&$4!=m2&&$4!=m3){exit};1'
  12.         fi
  13. fi
复制代码

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
5 [报告]
发表于 2010-07-20 19:44 |只看该作者
  1. 19:42:50 root@ST-TEST:[/etc]#if [ $M1 == $M3 ]; then
  2. >       last |awk -v m3=$M3 -v d=$D3 '$5<d||$4!=m3{exit};1'
  3. > else
  4. >       if [ $M2 == $M3 ]; then
  5. >               last |awk -v m1=$M1 -v m3=$M3 -v d=$D3 '($4==m3&&$5<d)||($4!=m1&&$4!=m3){exit};1'
  6. >       else
  7. >               last |awk -v m1=$M1 -v m2=$M2 -v m3=$M3 -v d=$D3 '($4==m3&&$5<d)||($4!=m1&&$4!=m2&&$4!=m3){exit};1'
  8. >       fi
  9. > fi
  10. lixy      pts/2        99.1.64.129            Jul 20 18:50   still logged in.
  11. root      pts/1        99.1.70.208            Jul 20 10:21   still logged in.
  12. dailyck   pts/1        99.1.73.241            Jul 20 08:20 - 08:20  (00:00)
  13. root      pts/0        99.1.70.94             Jul 20 08:04   still logged in.
  14. dailyck   pts/0        99.1.73.241            Jul 20 07:59 - 07:59  (00:00)
  15. root      pts/1        99.1.70.94             Jul 19 16:45 - 17:14  (00:29)
  16. root      pts/0        99.1.70.208            Jul 19 09:56 - 17:54  (07:58)
  17. dailyck   pts/0        99.1.73.241            Jul 19 08:20 - 08:20  (00:00)
  18. dailyck   pts/0        99.1.73.241            Jul 19 07:59 - 07:59  (00:00)
  19. lixy      pts/0        99.1.64.129            Jul 18 15:29 - 15:29  (00:00)
  20. lixy      pts/0        99.1.64.129            Jul 18 15:22 - 15:23  (00:01)
  21. lixy      pts/0        99.1.64.129            Jul 18 11:42 - 11:53  (00:10)
  22. dailyck   pts/1        99.1.73.241            Jul 18 08:20 - 08:20  (00:00)
  23. dailyck   pts/1        99.1.73.241            Jul 18 07:59 - 07:59  (00:00)
  24. lixy      pts/0        99.1.64.129            Jul 18 07:57 - 11:42  (03:44)
  25. dailyck   pts/0        99.1.73.241            Jul 17 08:20 - 08:20  (00:00)
  26. dailyck   pts/0        99.1.73.241            Jul 17 07:59 - 07:59  (00:00)
  27. root      pts/0        99.1.70.208            Jul 16 14:28 - 17:42  (03:14)
  28. dailyck   pts/0        99.1.73.241            Jul 16 08:20 - 08:20  (00:00)
  29. dailyck   pts/0        99.1.73.241            Jul 16 07:59 - 07:59  (00:00)
  30. root      pts/0        99.1.70.94             Jul 15 16:19 - 20:41  (04:22)
  31. dailyck   pts/0        99.1.73.241            Jul 15 08:20 - 08:20  (00:00)
  32. dailyck   pts/0        99.1.73.241            Jul 15 07:59 - 07:59  (00:00)
  33. root      pts/0        99.1.70.208            Jul 14 11:20 - 19:34  (08:14)
  34. root      pts/0        99.1.70.208            Jul 14 11:20 - 11:20  (00:00)
  35. root      pts/0        99.1.70.208            Jul 14 10:50 - 11:19  (00:29)
  36. root      pts/0        99.1.70.94             Jul 14 08:55 - 10:35  (01:40)
  37. root      pts/0        99.1.70.94             Jul 14 08:55 - 08:55  (00:00)
  38. dailyck   pts/0        99.1.73.241            Jul 14 08:21 - 08:21  (00:00)
  39. dailyck   pts/0        99.1.73.241            Jul 14 07:59 - 07:59  (00:00)
  40. root      pts/0        99.1.70.94             Jul 13 18:54 - 20:21  (01:26)
  41. root      pts/1        99.1.70.94             Jul 13 17:10 - 18:41  (01:30)
  42. root      pts/0        99.1.70.208            Jul 13 16:47 - 17:51  (01:04)
  43. root      pts/0        99.1.70.208            Jul 13 16:22 - 16:47  (00:25)
  44. root      pts/2        99.1.70.208            Jul 13 16:04 - 17:51  (01:47)
  45. root      pts/1        99.1.70.208            Jul 13 15:04 - 16:22  (01:17)
  46. root      pts/0        99.1.70.208            Jul 13 15:03 - 16:04  (01:00)
  47. root      pts/0        99.1.70.208            Jul 13 15:03 - 15:03  (00:00)
  48. root      pts/0        99.1.70.94             Jul 13 13:03 - 14:53  (01:49)
  49. dailyck   pts/0        99.1.73.241            Jul 13 08:20 - 08:20  (00:00)
  50. dailyck   pts/0        99.1.73.241            Jul 13 07:59 - 07:59  (00:00)
  51. lixy      pts/0        99.1.64.129            Jul 13 03:51 - 05:16  (01:25)
  52. root      pts/1        99.1.70.94             Jul 12 11:21 - 18:11  (06:50)
  53. root      pts/0        99.1.70.208            Jul 12 11:05 - 18:03  (06:58)
  54. dailyck   pts/0        99.1.73.241            Jul 12 08:20 - 08:20  (00:00)
  55. dailyck   pts/0        99.1.73.241            Jul 12 07:59 - 07:59  (00:00)
  56. dailyck   pts/0        99.1.73.241            Jul 11 08:20 - 08:20  (00:00)
  57. dailyck   pts/0        99.1.73.241            Jul 11 07:59 - 07:59  (00:00)
  58. dailyck   pts/0        99.1.73.241            Jul 10 08:21 - 08:21  (00:00)
  59. dailyck   pts/0        99.1.73.241            Jul 10 07:59 - 07:59  (00:00)
  60. dailyck   pts/0        99.1.73.241            Jul 09 08:20 - 08:20  (00:00)
  61. dailyck   pts/0        99.1.73.241            Jul 09 07:59 - 07:59  (00:00)
  62. lixy      pts/2        99.1.64.129            Jul 08 15:59 - 21:28  (05:29)
  63. lixy      pts/2        99.1.64.129            Jul 08 15:57 - 15:59  (00:01)
  64. root      pts/1        99.1.70.208            Jul 08 10:03 - 17:57  (07:53)
  65. dailyck   pts/1        99.1.73.241            Jul 08 08:20 - 08:20  (00:00)
  66. root      pts/0        99.1.70.94             Jul 08 08:05 - 17:41  (09:35)
  67. dailyck   pts/0        99.1.73.241            Jul 08 07:59 - 07:59  (00:00)
  68. lixy      pts/0        99.1.64.129            Jul 07 16:07 - 17:28  (01:21)
  69. dailyck   pts/0        99.1.73.241            Jul 07 08:20 - 08:20  (00:00)
  70. dailyck   pts/0        99.1.73.241            Jul 07 07:59 - 07:59  (00:00)
  71. root      pts/1        99.1.70.208            Jul 06 14:23 - 17:50  (03:27)
  72. root      pts/0        99.1.70.94             Jul 06 08:27 - 14:44  (06:16)
  73. dailyck   pts/0        99.1.73.241            Jul 06 08:20 - 08:20  (00:00)
  74. dailyck   pts/0        99.1.73.241            Jul 06 07:59 - 07:59  (00:00)
  75. root      pts/1        99.1.70.208            Jul 05 17:17 - 17:39  (00:22)
  76. dailyck   pts/1        99.1.73.241            Jul 05 08:20 - 08:20  (00:00)
  77. root      pts/0        99.1.70.94             Jul 05 08:11 - 17:45  (09:34)
  78. dailyck   pts/0        99.1.73.241            Jul 05 07:59 - 07:59  (00:00)
  79. dailyck   pts/0        99.1.73.241            Jul 04 08:20 - 08:20  (00:00)
  80. dailyck   pts/0        99.1.73.241            Jul 04 07:59 - 07:59  (00:00)
  81. dailyck   pts/0        99.1.73.241            Jul 03 08:20 - 08:20  (00:00)
  82. dailyck   pts/0        99.1.73.241            Jul 03 07:59 - 07:59  (00:00)
  83. root      pts/0        99.1.70.208            Jul 02 16:26 - 17:49  (01:22)
  84. dailyck   pts/0        99.1.73.241            Jul 02 08:19 - 08:19  (00:00)
  85. dailyck   pts/0        99.1.73.241            Jul 02 07:59 - 07:59  (00:00)
  86. root      pts/0        99.1.70.94             Jul 01 08:32 - 08:53  (00:20)
  87. dailyck   pts/0        99.1.73.241            Jul 01 08:20 - 08:20  (00:00)
  88. dailyck   pts/0        99.1.73.241            Jul 01 07:59 - 07:59  (00:00)
  89. root      pts/0        99.1.70.94             Jun 30 12:54 - 17:37  (04:43)
  90. dailyck   pts/0        99.1.73.241            Jun 30 08:20 - 08:20  (00:00)
  91. dailyck   pts/0        99.1.73.241            Jun 30 07:59 - 07:59  (00:00)
  92. dailyck   pts/0        99.1.73.241            Jun 29 08:20 - 08:20  (00:00)
  93. dailyck   pts/0        99.1.73.241            Jun 29 07:59 - 07:59  (00:00)
  94. root      pts/0        99.1.70.208            Jun 28 10:02 - 18:01  (07:59)
  95. dailyck   pts/0        99.1.73.241            Jun 28 08:19 - 08:19  (00:00)
  96. dailyck   pts/0        99.1.73.241            Jun 28 07:59 - 07:59  (00:00)
  97. dailyck   pts/0        99.1.73.241            Jun 27 08:20 - 08:20  (00:00)
  98. dailyck   pts/0        99.1.73.241            Jun 27 07:59 - 07:59  (00:00)
  99. dailyck   pts/0        99.1.73.241            Jun 26 08:20 - 08:20  (00:00)
  100. dailyck   pts/0        99.1.73.241            Jun 26 07:59 - 07:59  (00:00)
  101. root      pts/3        99.1.70.208            Jul 25 16:29 - 17:55  (01:25)
  102. root      pts/2        99.1.70.94             Jun 25 16:29 - 18:01  (01:32)
  103. root      pts/1        99.1.70.208            Jun 25 16:28 - 17:55  (01:26)
  104. 19:42:51 root@ST-TEST:[/etc]#
复制代码

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
6 [报告]
发表于 2010-07-20 19:57 |只看该作者
  1. 注:TZ=TZ+672 date +%b是AIX平台的写法,其它平台用同样的思路自行取28天前的日期
  2. 19:58:08 root@ST-TEST:[/etc]#date
  3. Tue Jul 20 19:58:09 BEIST 2010
  4. 19:58:09 root@ST-TEST:[/etc]#TZ=TZ+672 date
  5. Tue Jun 22 11:58:11 TZ  2010
  6. 19:58:11 root@ST-TEST:[/etc]#
复制代码

论坛徽章:
0
7 [报告]
发表于 2010-07-21 05:06 |只看该作者
date -d -30day +%m/%d

论坛徽章:
3
15-16赛季CBA联赛之辽宁
日期:2017-12-28 12:15:1015-16赛季CBA联赛之福建
日期:2017-12-28 12:26:5115-16赛季CBA联赛之新疆
日期:2018-03-07 15:09:17
8 [报告]
发表于 2010-07-21 10:25 |只看该作者
太难了哦,如果不是要输出到某个文件。

last | more
然后拍空格翻页。

论坛徽章:
3
15-16赛季CBA联赛之辽宁
日期:2017-12-28 12:15:1015-16赛季CBA联赛之福建
日期:2017-12-28 12:26:5115-16赛季CBA联赛之新疆
日期:2018-03-07 15:09:17
9 [报告]
发表于 2010-07-21 10:39 |只看该作者
我发现 去年10月和今年3月的登陆信息在格式上并不存在差异。所以跨年的话就很难处理。
Wed Mar 10 13:50
Mon  Oct 12 13:20

# uname -srv
Linux 2.6.18-164.6.1.el5 #1 SMP Tue Nov 3 16:18:27 EST 2009

有个方法就是计算出30天前的日期(以last的输出Wed Mar 10为格式)
然后据此截断last的输出。截断得标准你懂的了。

论坛徽章:
0
10 [报告]
发表于 2010-07-21 11:22 |只看该作者
我试过不少方法,后来有人建议我把 /etc/wtmp下的内容给导出来,这个对我来说就太难了,这个文件都不能cat的,只能用who来查看
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP