将每个命令输出重定向到各自的日志文件期望脚本

将每个命令输出重定向到各自的日志文件期望脚本
set commands {
   "show phone xxx 11"
   "show phone yyy 22"
   "show phone zzz 33"
}

spawn ssh -o StrictHostKeyChecking=no $UserId@$host
sleep 15
#wait for password prompt
expect "*assword:"
#send password 
send -- "$Passwd\r"
sleep 5
foreach cmd $commands {
    set logfile [join [lrange [split $cmd] 2 end] _]
    log_file -a $logfile
    send -- "$cmd\r"
    expect -re "admin:"
    exp_sleep 8
    log_file
}

无法将命令的输出重定向到相应的日志文件。

xxx_11 log file contains 'spawn ssh -o StrictHostKeyChecking=no $UserId@$host' output.
yyy_22 log file contains 'show phone xxx 11' command output.
zzz_33 log file contains 'show phone yyy 22' command output.

如何通过以下方式写入日志文件:

XXX_11 log file contains 'show phone xxx 11' command output
yyy_22 log file contains 'show phone yyy 22' command output
zzz_33 log file contains 'show phone zzz 33' command output

提前感谢您的帮助。

答案1

第一个将读取第一个提示之前expect -re "admin:"的输出。大概会发出这样的提示sshadmin:你开始发送命令。

你错过了一个expect电话你的循环到消耗在发送命令之前到目前为止发送的所有输出。如果你不知道输出什么预计,你可以用任何超时的东西替换你sleep 5expect

相关内容