如何从expect脚本将“exec”命令的结果记录到log_file中

时间:2017-04-19 15:29:49

标签: expect

我想用log_file命令捕获我的期望脚本的进度。在expect shell中发出以下命令后,所有内容都将记录在日志文件中。

expect1.1> log_file my.log
expect1.2> exec timedatectl status
      Local time: St 2017-04-19 17:07:10 CEST
                ⋮ 
 RTC in local TZ: no

但是运行以下脚本会给我留下空日志。

#!/usr/bin/expect -f
log_file mylog.log
exec timedatectl status

如何从Expect脚本中捕获日志?

有一个similar question,遗憾的是答案不涉及记录部分。

1 个答案:

答案 0 :(得分:1)

您可以捕获输出并将其明确发送到日志文件:

set output [exec echo hello world]
send_log $output

我认为它可以自动将exec结果记录到log_file的原因是(根据man tclsh):

  

如果没有参数调用,则以交互方式运行,从标准输入读取Tcl命令,并将打印命令结果和错误消息读取到标准输出

听起来像log_file会捕获写入tty的所有数据,但在脚本中(非交互模式),exec的结果不会自动打印到tty。