期待脚本 - 提取用户ID

suj*_*suj 1 shell expect

我知道这是非常基本的.但我从来没有弄错.

我想通过使用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"
}
Run Code Online (Sandbox Code Playgroud)

上面代码的输出是,

asisdtt-exp7$ whoami
USER whoami
kandabap
asisdtt-exp7$ exit
Run Code Online (Sandbox Code Playgroud)

当我硬编码我期望的用户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"
Run Code Online (Sandbox Code Playgroud)

输出,

asisdtt-exp7$ whoami
kandabap
asisdtt-exp7$ 
USER kandabap
Run Code Online (Sandbox Code Playgroud)

我很困惑.任何人都可以帮忙,请...

问候

Tod*_*obs 5

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

log_user 0
spawn whoami
expect eof
set jobid $expect_out(buffer)
puts "USER $jobid"
Run Code Online (Sandbox Code Playgroud)

当然,这些都不是真正需要的.您可以使用普通TCL执行相同的操作:

puts "USER [exec whoami]"
Run Code Online (Sandbox Code Playgroud)