标签: tcl

期望+如何确定是否因为超时而期望中断?

以下简单期望脚本的目标是获取远程机器上的主机

有时期望脚本无法对 $IP_ADDRESS 执行 ssh(因为远程机器不活动等)

所以在这种情况下,expect 脚本将在 10 秒后中断(超时 10),这没问题,但是......

有两种选择

  1. Expect脚本成功执行ssh,并在远程机器上执行了命令hostname
  2. 预计脚本中断,因为超时为 10 秒

在这两种情况下,expect 都会退出

  • 如果 ssh 成功,预计会在 0.5-1 秒后中断,但如果 ssh 不好,则会在 10 秒后中断

但我不知道expect脚本是否成功执行ssh?

是否可以识别超时过程?或验证期望因超时而结束?

备注我的 Linux 机器版本 - red-hat 5.1

期待脚本

 [TestLinux]# get_host_name_on_remote_machine=`cat << EOF
  > set timeout 10
  > spawn  ssh   $IP_ADDRESS
  >            expect {
  >                      ")?"   { send "yes\r"  ; exp_continue  }
  > 
  >                      word:  {send $PASS\r}
  >                   }
  > expect >  {send "hostname\r"}
  > expect >    {send exit\r}
  > expect eof …
Run Code Online (Sandbox Code Playgroud)

linux ksh tcl expect shell-scripting

5
推荐指数
1
解决办法
3337
查看次数

在TCL SCRIPT中,如何添加字典或数组

我正在尝试在字典或数组格式上创建类似关键字 start_number last_number 的输出格式。在我的代码中,我使用了字典,代码是:

set keyword_numbers {}
set previous_keyword ""
set last_no 0
foreach item $data {

    regexp {(\w+)\[(\d+)\]} $item -> keyword number
    set new_keyword "$keyword $number"
    puts $keyword
    set key_start_end_data [dict create ]
    if {$keyword == $previous_keyword} {
        if { $number > $last_no } {
            set last_no $number
        } else {
            set last_no $number
        }
        dict lappend key_start_end_data $keyword_data bit_end $last_no
        
    } else {
        set new_keyword $keyword
        set start_no $number
        set keyword_data [lindex $new_keyword 1]
        dict lappend …
Run Code Online (Sandbox Code Playgroud)

tcl

3
推荐指数
1
解决办法
456
查看次数

标签 统计

tcl ×2

expect ×1

ksh ×1

linux ×1

shell-scripting ×1