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