expect script + как игнорировать строки, если они не появляются

Я написал следующий скрипт expect, чтобы автоматизировать вход по ssh на удаленную машину Linux И запускаю команду "cat /etc/APP_VERSION.txt file"

Sometime I not asked from ssh command about-

    "Are you sure you want to continue connecting (yes/no)?"

Так вот, в этом случае первый expect все еще ждет строки "(yes/no)?" -:(

И не переходит ко второму ожиданию - "password:" ?

Как это решить? ,

То есть если строка "Вы уверены, что хотите продолжить соединение (да/нет)?" не появляется из ssh

Тогда надо перейти к следующему expect "password:" , но как это сделать?

remark1 - в случае если вопрос "Are you sure you want to continue connecting (yes/no)?" появляется, то скрипт expect работает нормально без каких-либо проблем. .

remark2 - я не могу использовать положительное значение таймаута (как таймаут 10), потому что у самого ssh есть задержка

. . . .

Мой скрипт expect: (этот expect является частью моего скрипта ksh)

  .
  .
  .

  APP_MACHINE=172.12.6.190  


  set timeout -1
  spawn  ssh $APP_MACHINE  
       expect {
                "(Are you sure you want to continue connecting yes/no)?" 
                              { send "yes\r" }
              }
       expect password:        {send PASS123\r}
     expect >  {send "cat /etc/APP_VERSION.txt\r"}
   expect >    {send exit\r}
  expect eof

 .
 .
 .

. . . . .

пример ssh с моей машины linux

  ssh APP_MACHINE
  The authenticity of host 'APP_MACHINE (172.12.6.190 )' can't be established.
  RSA key fingerprint is 1e:8a:3d:b3:e2:8c:f6:d6:1b:16:65:64:23:95:19:7b.
  Are you sure you want to continue connecting (yes/no)?
7
задан Cœur 10 December 2017 в 07:22
поделиться