2016-11-10 59 views
0

我做一个Linux脚本提取哪些用户已登录到机器上,来自哪里,多久他们已闲置打印用户名超过8个字符不再与“W”。 到目前为止,我一直在linux中使用“w”命令。 不过我现在发现它截断用户名和源无法在Linux

我有三个用户登录 testuser的 testuser的全新 拉拉-TESTUSER

它们无论从登录:TESTSERVER,或superdupertestserver

w的输出是:

testuser pts/2 testserver  10:12 29.00s 0.15s 0.15s -bash 
testuser pts/3 superdupertestse 10:12 21.00s 0.18s 0.18s -bash 
lala-tes pts/4 superdupertestse 10:12 21.00s 0.18s 0.18s -bash 

我已经在使用输出的“长列表”了。有没有办法解决这个问题,或者从w的源代码中获取信息?

回答

1

人宽:

ENVIRONMENT 
     PROCPS_USERLEN 
       Override the default width of the username column. Defaults to 
       8. 

     PROCPS_FROMLEN 
       Override the default width of the from column. Defaults to 16. 
+0

你能指出我的正确的手册页?我只是有这个:https://linux.die.net/man/1/w – hek2mgl

+0

在命令提示符下键入'man w' –

+0

您使用的是哪个版本的'w'? – hek2mgl

0

w会从/var/run/utmp的信息。如果您的w版本不支持PROCPS_USERLEN环境变量,您可以使用utmpdump命令,并解析其与awk

例如下面的命令将提取的用户名:

utmpdump /var/run/utmp | awk '{gsub(/[][]/, "", $4); print $4}' 
+0

,但它也使用它自己的输出格式,它可以;我可以证实它适用于W版本3.3.10 –

+0

当然) – hek2mgl

+0

我想从w中提取的数据是username,tty,空闲时间和from。似乎我需要使用w来获得空闲时间,然后从last或utmpdump获取其余数据 – Johnathan