моя контактная информация
Почтамезофия@protonmail.com
2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Shell Expect автоматическое взаимодействие
Во время повседневной эксплуатации и обслуживания Linux часто необходимо удаленно войти на сервер. В процессе входа в систему требуется интерактивный процесс, и может потребоваться ввод такой информации, как «да» или «нет», поэтому для обеспечения взаимодействия используется «ожидание». .
Ключевой синтаксис
❶[#!/usr/bin/expect]
Эта строка сообщает операционной системе, какую оболочку использовать для выполнения кода сценария. Ожидайте, что на самом деле это то же самое, что bash в Linux и cmd в Windows. ПРИМЕЧАНИЕ. Эта строка должна быть первой в сценарии.
❷набор
Тайм-аут ожидания по умолчанию составляет 10 секунд. Тайм-аут сеанса можно установить с помощью команды set. Если тайм-аут не ограничен, его следует установить на -1.
Например: set timeout 300 //Указывает, что время ожидания сеанса составляет 300 с.
Например: установить таймаут -1/настройка/никогда таймаут, общие настройки.
Примечание. Зачем нужно устанавливать тайм-аут? Поскольку время по умолчанию составляет 10 секунд, оно, скорее всего, будет отключено во время интерактивного выполнения, что приведет к прекращению выполнения задачи до ее завершения. Запланированная задача нашей компании, которая синхронизировала файлы с удаленного ftp, всегда завершалась. Позже я установил тайм-аут на -1, и все было в порядке.
❸спаун
За спавном обычно следует команда выполнения Linux, что означает открытие сеанса, запуск процесса и отслеживание последующей информации о взаимодействии.
❹ожидать
Ожидание захватывает только результаты выполнения команд, выполняемых spawn, которые в основном включают информацию о подсказке стандартного ввода, eof и тайм-аут. Подождите, пока появится командная строка, которая является приглашением для записи пользовательского ввода:
➎отправить
Отправка значений, требующих взаимодействия, заменяет ручной ввод пользователя; эта команда не может автоматически вводить или переводить строку и обычно требует добавления r (возврат каретки) или n.
ожидаем "пароль" { send "abc123r"} // Часть отправки той же строки должна содержать {}
❻Терминатор ожидает продолжения/взаимодействия
ожидать конец света
Это должно быть добавлено, что соответствует spawn, это означает, что вывод информации терминала захвата прекращается, аналогично if....endif.
взаимодействовать
После завершения выполнения сохраните интерактивное состояние и передайте управление консоли. В это время можно выполнять ручные операции. Если такого предложения нет, оно завершится после завершения входа в систему, а не останется на удаленном терминале.
PS: Сценарий ожидания должен заканчиваться взаимодействием или ожидать eof. Обычно Expect eof достаточно для выполнения автоматизированных задач.
Пример
Вставьте команду ожидания в сценарий оболочки, формат следующий:
Пример 1: 22.sh скрипт создания папки
#!/bin/ш ожидать спавн ssh 10.1.1.196 ожидайте пароль {отправить xxxn} отправьте cd /home/cg/hmf_app/testr отправить mkdir newworkr отправить выход ожидать конец света ЕОФ |
Пример 2. Создание сценария оболочки папки
ожидать спавн ssh 10.1.1.196 ожидайте пароль {отправить xxxn} отправьте cd /home/cg/hmf_app/testr отправить mkdir newworkr отправить выход ожидать конец света ЕОФ |
Пример 3. Копирование файлов
ожидать установить таймаут -1 создайте scp [email protected]:/data/package/casb/$casbzip ./ ожидайте пароль {отправить xxxn} ожидать конец света ЕОФ |
Примечание:
ЕОФ
...
ЕОФ
Представляет сценарий оболочки