如何将telnet控制台日志重定向到文件linux

Sar*_*ran 2 linux shell tcl

我想将telnet控制台日志重定向到linux中的文件.

例如:

telnet $someIp > someFile
#ls
#exit
Run Code Online (Sandbox Code Playgroud)

我希望控制台日志保存在文件名"someFile"中.我用它tcl来自动化这个.截至目前,我做spawn telnet $someIptcl.

这不会捕获控制台日志并将其保存到文件中.

可以这样做吗?

Pep*_*lac 13

您可以使用tee命令来执行此操作:

telnet $someIp | tee -a  -i someFile
Run Code Online (Sandbox Code Playgroud)

  • @Saran这些只是渲染颜色的代码.关于如何摆脱它们,请参阅http://unix.stackexchange.com/questions/58982/disable-colours-on-terminal-and-ssh (2认同)

Din*_*esh 4

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)

参考:探索期望