Я хочу запустить 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 несколько лет, извините, если синтаксис неправильный!