我试图找出一个过程来监视远程服务器上的用户会话,并在空闲时间过长时发出警报,这与Linux命令w
是恰当合适的。
问题是 – w
使用3种不同的格式来指定会话的空闲时间,而我无法正确识别它们。 w
的输出可能如下所示:
11:40:57 up 400 days, 10:46, 13 users, load average: 5.07, 5.10, 4.83 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT john pts/1 XX.XX.XX.XX Wed13 22:29m 0.13s 0.04s ssh master-db june pts/2 XX.XX.XX.XX Wed13 46.00s 0.67s 0.13s -bash jenn pts/4 XX.XX.XX.XX 11:13 27:47 4.16s 0.11s -bash
正如您所看到的,IDLE对于每个用户都有不同的格式:
如果没有限定词,那就意味着MM:SS–即分钟和整秒。 作为一个额外的好处,在输出中没有第四种格式 – 不活动的天数(NN日)。
从手册页
如果时间分别大于2天,1小时或1分钟,标准格式是DDdays,HH:MMm,MM:SS或SS.CC。
所以你的输出是MM:SS(> 1米和<1小时)。
不完全是你的问题的答案,但更容易的方法来检查login会话的空闲时间将是看/ dev / pts。 其中文件的修改时间反映了上次login会话接收input的时间。
你应该可以在那里做统计操作(例如,stat –format =“%n%X”*),并保持一切在时代秒。 应该使任何时间计算更容易。
答案是27分47秒