1

我想使用 whoami 命令获取终端用户 ID。我在下面给出了我的脚本,但它只返回命令名称,而不是用户名?

如何使用 whoami 命令获取终端用户 ID?

我的代码是,

send "whoami\r"
      set timeout 5
      expect -re {([a-z]+)} {
       set jobid $expect_out(0,string)
      }
      send_user "\r\nUSER $jobid\r\n"
}

上述代码的输出是,

asisdtt-exp7$ whoami
USER whoami
kandabap
asisdtt-exp7$ exit

当我硬编码我预期的用户 ID (kandabap) 的第一个字母时,我得到了正确的答案。那个代码是,

send "whoami\r"
      set timeout 5
      expect -re {k([a-z]+)} {
       set jobid $expect_out(0,string)
      }
      send_user "\r\nUSER $jobid\r\n"

输出,

asisdtt-exp7$ whoami
kandabap
asisdtt-exp7$ 
USER kandabap

我很困惑。

4

1 回答 1

5

我不确定你真正想要做什么,但这会很好:

log_user 0
spawn whoami
expect eof
set jobid $expect_out(buffer)
puts "USER $jobid"

当然,这些都不是真正需要的。你可以使用普通的 TCL 做同样的事情:

puts "USER [exec whoami]"
于 2012-06-28T08:26:12.677 回答