每次运行TCL脚本时创建一个新文件

每次运行TCL脚本时创建一个新文件,tcl,expect,logfile,Tcl,Expect,Logfile,我是TCL新手,有一些东西需要自动化,我需要我的代码在登录过程后记录所有命令和结果。 我的主要问题是每次运行脚本时都需要创建一个不同的日志文件,我发现的一种方法是在文件名上“附加”唯一的“时间戳” 这就是它开始变得挑剔的地方,你看,每次我试图将变量“$time”附加到它返回的文件名后: 无法打开“15-10-28/11:57:10--xxx.xxxx.xxxx.txt”:没有这样的文件或目录 执行时 日志文件“$newfile” (文件“ssh test.tcl”第31行) 我的代码如下: se

我是TCL新手,有一些东西需要自动化,我需要我的代码在登录过程后记录所有命令和结果。 我的主要问题是每次运行脚本时都需要创建一个不同的日志文件,我发现的一种方法是在文件名上“附加”唯一的“时间戳”

这就是它开始变得挑剔的地方,你看,每次我试图将变量“$time”附加到它返回的文件名后: 无法打开“15-10-28/11:57:10--xxx.xxxx.xxxx.txt”:没有这样的文件或目录 执行时 日志文件“$newfile” (文件“ssh test.tcl”第31行)

我的代码如下:

set user [lrange $argv 0 0]
set password [lrange $argv 1 1] 
set ipaddr [lrange $argv 2 2]   
set arg1 [lrange $argv 3 3] 
set systemTime [clock seconds]
set time [clock format $systemTime -format %y-%m-%d/%H:%M:%S--]
set a "ssh"
set suffix ".txt"
append newfile "${a}${arg1}${suffix}"

set timeout -1   
# now connect to remote UNIX box (ipaddr) with given script to execute

spawn ssh $user@$ipaddr
match_max 100000
# Look for passwod prompt
expect "*?assword:*"
# Send password aka $password 
send -- "$password\r"
log_file "$newfile" ;
expect "*#"
send -- "\r"
send_user "This is the $argv0 Script"
send -- "scm $arg1\r"
expect "*#"
send -- "exit\r"
expect eof
如果我使用“set filename”${a}${arg1}${suffix}”字符串和“log_file”$filename”,效果很好,但它会将新信息附加到现有文件中,并且每次运行脚本时都需要一个新文件

如果我使用'append newfile“${a}${arg1}${suffix}”字符串和'log_file“$newfile”'将不起作用,并返回已引用的错误


希望你们能帮助我,并提前感谢你们的支持。

您正在创建带有
/
的时间戳

set time [clock format $systemTime -format %y-%m-%d/%H:%M:%S--]
将其附加到变量
newfile
时,它将变成
15-10-28/11:57:10--xxx.xxxx.xxxx.txt


Expect会认为有一个名为
15-10-28
的文件夹可用,我必须在该文件夹下创建文件
11:57:10--xxx.xxxx.xxxx.txt
。由于该文件夹不可用,您将收到错误消息,显示为
无此类文件或目录

在发现日期格式弄乱了我的代码后,我开始使用特殊字符,并使其按如下方式工作:

set time [clock format $systemTime -format %a_%b_%d_%Y@%H'%M'%S]

这不是期望的格式,但至少我让它按我的预期工作。

我试图纠正这一点,但仍然得到了错误,这是更改后的代码:设置时间[时钟格式$systemTime-格式%y-%m-%d%H:%m:%S]设置“ssh-”设置后缀.txt“#追加新文件”${a}${arg1}${time}${suffix}”不,现在是:'无法打开“ssh xxxx.xxxx.xxxx15-10-2813:53:41.txt”:执行“日志文件”$newfile”“(文件“ssh test.tcl”第31行)时出现协议错误