gpt4 book ai didi

tcl - 如何为 tcl 脚本创建日志文件

转载 作者:行者123 更新时间:2023-12-05 08:24:15 27 4
gpt4 key购买 nike

我正在运行用于连接 Telnet 端口的 Tcl 脚本。对于这个脚本,我想将所有 CMD 输出存储在一个日志文件中。如何在 Tcl 脚本中执行此操作?脚本如下:

#!/usr/bin/expect -f
#!usr/bin/expect
package require Expect
spawn telnet $serverName $portNum
expect "TradeAggregator>"
send "Clients\r"
expect "Client:"
send "1\r"
expect "1-Client>"
send "Pollers\r"
expect "Client Pollers"
send "2\r"
send "n\r"
expect ">"
set passwordOption $expect_out(buffer)
set searchString "Not confirmed"
if {[string match *$searchString* $passwordOption]} {
puts "match found" }\
else {
puts "match not found"
xmlPasswordChange $polName
}

所有 puts 输出和 xmlPasswordChange 过程输出都没有打印在日志文件中。你能指出我哪里做错了吗?

提前感谢您的帮助。

最佳答案

您想在要开始保存输出的位置插入一个log_file 命令。例如,如果要保存所有输出,则将其粘贴到开头:

#!/usr/bin/expect -f

log_file myfile.log ;# <<< === append output to a file

package require Expect
spawn telnet $serverName $portNum
expect "TradeAggregator>"
send "Clients\r"
expect "Client:"
send "1\r"
expect "1-Client>"
send "Pollers\r"
expect "Client Pollers"
send "2\r"

默认情况下,log_file 如果文件存在则追加,或者创建一个新文件。如果你想每次都开始一个新的日志,那么:

log_file -noappend myfile.log

更新

根据你关于为什么 puts 输出到控制台而不是日志文件的问题。我理解的方式是 puts 将转到控制台。如果你想记录到日志文件(用 log_file 命令打开的),那么使用 send_log 命令代替:

log_file -noappend myfile.log
send_log "This line goes into the log file"
send_user "This line goes into both the log file and console\n"
puts "This line goes to the console"

上面的例子介绍了另一个命令:send_user,它的作用类似于putssend_log的组合。请注意,send_user 不包含新行,因此调用者应包含它。

关于tcl - 如何为 tcl 脚本创建日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15965504/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com