我正在做一个linux脚本来提取哪些用户登录到一台机器,从哪里以及它们闲置了多长时间。 到目前为止,我一直在使用" w" linux中的命令。 但是我现在注意到它截断了用户名和源
我有三个用户登录 testuser的 testuser的新 拉拉-TESTUSER
他们从以下任一处登录:testserver或superdupertestserver
w的输出是:
{{1}}
我已经在使用"长期上市"的输出。有没有办法解决这个问题,或者确实从源w获取信息?
答案 0 :(得分:1)
man w:
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.
答案 1 :(得分:0)
w
从/var/run/utmp
获取信息。如果您的w
版本不支持PROCPS_USERLEN
环境变量,则可以使用utmpdump
命令并使用awk
解析它:
例如,以下命令将提取用户名:
utmpdump /var/run/utmp | awk '{gsub(/[][]/, "", $4); print $4}'
答案 2 :(得分:0)
嗨@hek2mgl:你只需要导出变量:
patrick_westwood@james:~$ export PROCPS_USERLEN=20
patrick_westwood@james:~$ w
17:53:10 up 1 day, 18 min, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
patrick_westwood pts/0 174.1.33.169 16:54 6.00s 0.19s 0.00s w
patrick_westwood pts/1 174.1.33.169 16:54 58:41 0.00s 0.00s -bash