期待调用shell脚本

时间:2015-06-02 17:03:24

标签: bash expect

我正在尝试调用shell脚本并将结果存储在expect变量中。 get_pw.sh接受2个args并使用提供的md5hash解密文件。如果我从bash提示符执行./get_pw.sh file.test md5hash,它会按预期返回密码字符串。从expect调用时,不会返回密码。期望调试显示:

expect: does "" (spawn_id exp0) match regular expression "[^\s]"?

因此看起来脚本在从expect调用时没有返回密码字符串。相关代码:

#!/usr/bin/expect
send "./get_pw.sh file.test md5hash \r"
expect -re {[^\s]} {
set password $expect_out(0,string)
}
puts "The password is: $password"

2 个答案:

答案 0 :(得分:1)

您需要先spawn一个命令才能send输入并输出expect

要将 expect 变量设置为命令的输出,请使用

set varname [exec command]

答案 1 :(得分:0)

如果你必须这样做,

  log_user 0
  spawn -noecho get_pw.sh file hash
  expect eof
  set passwd [string trimright $expect_out(buffer) "\r\n"]
  puts $passwd

Jens的答案现在看起来很不错......