我想用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,遗憾的是答案不涉及记录部分。
答案 0 :(得分:1)
您可以捕获输出并将其明确发送到日志文件:
set output [exec echo hello world]
send_log $output
我认为它可以自动将exec
结果记录到log_file
的原因是(根据man tclsh
):
如果没有参数调用,则以交互方式运行,从标准输入读取Tcl命令,并将打印命令结果和错误消息读取到标准输出。
听起来像log_file
会捕获写入tty的所有数据,但在脚本中(非交互模式),exec
的结果不会自动打印到tty。