我想将telnet控制台日志重定向到linux中的文件.
例如:
telnet $someIp > someFile
#ls
#exit
Run Code Online (Sandbox Code Playgroud)
我希望控制台日志保存在文件名"someFile"中.我用它tcl来自动化这个.截至目前,我做spawn telnet $someIp在tcl.
这不会捕获控制台日志并将其保存到文件中.
可以这样做吗?
Pep*_*lac 13
您可以使用tee命令来执行此操作:
telnet $someIp | tee -a -i someFile
Run Code Online (Sandbox Code Playgroud)
Expect 有一种编程方式来启动和停止记录(或记录)。给定文件名参数,该log_file命令将打开文件并开始向其中记录。如果日志文件已打开,则首先关闭旧文件。
录制是通过附加到文件来完成的,因此如果文件中之前存储过任何内容,它都会保留下来。要重新开始,请使用该-noappend标志。
您可以通过在不需要时关闭日志记录来节省空间。这是通过log_file不带参数的调用来完成的。例如,以下片段开始记录,执行一些 I/O,停止记录,执行更多 I/O,然后再次开始记录。
expect . . . ; send
# start recording
log_file telnetlog
expect . . . ; send
# stop recording
log_file
expect . . . ; send
# start recording
log_file telnetlog
expect . . . ; send
Run Code Online (Sandbox Code Playgroud)
默认情况下,log_file仅记录用户看到的内容。如果log_user调用该命令来抑制生成程序的输出,则 log_file 不会记录抑制的输出,因为用户也看不到它。可以使用标志(对于“所有输出”)log_file来记录抑制的输出。-a
log_file -a log
Run Code Online (Sandbox Code Playgroud)
和以前一样,可以通过发出不带参数的 log_file 来禁用此日志记录。要返回仅记录用户看到的内容,请调用不带 -a 的 log_file。
log_file -a log
expect . . . ; send . . .
log_file log
Run Code Online (Sandbox Code Playgroud)
参考:探索期望