如何使用Ruby获取Linux中登录用户的列表,而无需处理w
或who
的输出?
如果唯一的方法是使用Rubygem,那没关系,但如果有办法在不使用任何外部程序的情况下安装任何内容并且不是很好。
答案 0 :(得分:0)
由于您标记了您的问题' Linux',我会选择以下内容:
who | cut -f2 -d " "
console
ttys000
或irb
:
$ irb
1.9.3p194 :001 > exec 'who | cut -f2 -d " "'
console
ttys000
另见:Other options to run a shell command。
以下是如何使用Etc以非os依赖方式获取当前用户:
$ irb
1.9.3p194 :001 > require 'etc'
=> true
1.9.3p194 :002 > Etc.getlogin
=> "DudeRoot"
还有一个选项是compile a .c
extension code,它可以满足您的需要,并在github上为其他人发布。
答案 1 :(得分:0)
有一个包含utmp
API的原生扩展的Rubygem:rutmp
您可以使用它来继续呼叫getutent
以收集有关所有登录用户的信息。
我没有看到这比解析w
的输出更简单,{{1}}保证存在于每个Linux系统上。
为什么要不惜一切代价避免拨打外部程序?