期待脚本 - 提取用户ID

时间:2012-06-28 07:48:58

标签: 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"
}

上述代码的输出是,

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

我非常困惑。任何人都可以帮忙,请...

此致

1 个答案:

答案 0 :(得分:5)

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

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

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

puts "USER [exec whoami]"