Цикл в переменной скрипта, кроме Получения значения из текстового файла

#expect

Вопрос:

У меня есть следующий сценарий:

 #!/usr/bin/expect -f
 
# Set variables
 set hostname [lindex $argv 0]
 set username [lindex $argv 3]
 set password [lindex $argv 1]
 set devname  [lindex $argv 4]
 set enablepassword [lindex $argv 2]
 set conft 0
# Log results
 log_file -a ~/scripts/ExpectScripts/9120CiscoAPs/results.log
 
# Announce which device we are working on and at what time
 send_user "n"
 send_user ">>>>>  Working on $hostname $devname @ [exec date] <<<<<n"
 send_user "n"
 
# Don't check keys
 set timeout 30
 spawn ssh -o StrictHostKeyChecking=no -o ConnectTimeout=30 $username@$hostname
 expect "User:"
 send "$usernamen"
 expect "Password:"
 send "$passwordn"
 expect "*>"
 set f [open "aprebootlist2.txt"]
 set aps [split [read $f] "n"]
 close $f
 foreach ap $aps {
 send "config ap reset $apn"
   expect {
          "*n)" {send "yn"}
          "*invalid." {send "r"}
          }
  expect eof
  close
 }
  send "r"
  expect "*>"
  send "logoutn"
 expect "*(y/N)"
 send "nr"
 exit
 

Это должно войти в беспроводной контроллер cisco и в основном выполнить команду «ap config reset apvariable» несколько раз. Я попытался создать цикл, получая переменную для имени точки доступа из текстового файла. Скрипт входит в контроллер, считывает первое имя в файле, после чего происходит сбой с приведенной ниже ошибкой. Что я делаю не так?
Ошибка заключается в:

 Cisco Controller) >send: spawn id exp6 not open
    while executing
"send "config ap reset $apn""
    ("foreach" body line 2)
    invoked from within
"foreach ap $aps {
 send "config ap reset $apn"
   expect {
          "*n)" {send "yn"}
          "*invalid." {send "r"}
          }
  expect eof
  ..."
    (file "./rebootapcommands2.exp" line 29)
 

Комментарии:

1. Почему вы закрываете созданное соединение внутри цикла? Вот почему она не открыта.

2. Итак, мне нужно поставить оператор close после последнего } ?