Назад | Перейти на главную страницу

ожидать, что сценарий будет поддерживать два ожидаемых символа

Я хочу запустить sshd restart на Linux и Solaris через ожидание (я ожидаю запуска в моем сценарии ksh)

Я создаю сценарий ожидания, поэтому, когда он ожидает увидеть приглашение "#", он запускает sshd restart

но проблема в том, что я запускаю это ожидание также на солнечных батареях, а в приглашении есть ">", так как создать одну ожидаемую строку, которая поддерживает приглашение "#" и ">"

на linux

    expect #                {send "/etc/init.d/sshd restart\r"}

солярис

   expect >                {send "/etc/init.d/sshd restart\r"}

Используйте шаблон шара: expect {[#>]}

или регулярное выражение: expect -re {#|>} - шаблон регулярного выражения можно усложнить. Я рекомендую вам привязать подсказку к концу строки. Часто подсказки заканчиваются пробелом, чтобы вы могли:

expect -re {[#>] ?$}

Вы можете поместить это в оператор if, проверив вывод uname -s или проверив вывод:

кошка / etc / release

кот / и т.д. / Redhat-релиз

кот / etc / lsb-release

И используйте что-то вроде:

if [[ $(uname -s) == "Linux" ]];then
   expect #  {send "/etc/init.d/sshd restart\r"}
else
   expect >  {send "/etc/init.d/sshd restart\r"}
fi

Я не использовал ksh несколько лет, извините, если синтаксис неправильный!