LINUX.ORG.RU

[решено]Expect «подключиться» к запущеному spawn из другого proc

 ,


0

1

Есть большой скрипт на expect где часто авторизовываться. Хочу сделать proc что бы авторизация была в одном месте, а не писать каждый раз ее.
Но получаю ошибку:
spawn /usr/bin/telnet 10.0.1.1
: spawn id exp8 not open

Как передать этот spawn id в функцию?

Если включить дебаг, то выдает следующее, есть подозрение что spawn убивается или дисконектится перед вызовом функции. Если так, то как этого избежать?

spawn /usr/bin/telnet 10.0.113.8
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {2358}
exp8
exp_i_parse_states: : spawn id exp8 not open: spawn id exp8 not open

Код:

proc Login {pflag} { 
  global login
  global password
  while {1} {
    expect { 
       timeout         { send_user "Timout"; return 0; }    
       -re "Username"  { send "$login\r"; }     
       -re "Password:" { send "$password\r";}
       -re $prompt     { send "\r"; break;}        
       eof             { send_user "Something wents wrong\n"; return 0;}
       }
    } 
return 1;                 
}


spawn $telnet $ipaddress
  if {[Login $flag]} { 
   expect -re $prompt     { send "sh sw\r";}     
  }



Последнее исправление: DeeZ (всего исправлений: 1)

решено

Разобрался. надо было «global spawn_id» добавить и в вызывающую spawn функцию и в login

DeeZ
() автор топика
Ответ на: решено от DeeZ

решено

Пометь тред как решённый же.

ziemin ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.