Обмен технологиями

Автоматическое взаимодействие Shell Expect (пример)

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}

ожидать конец света

ЕОФ

Примечание:

ЕОФ

...

ЕОФ

Представляет сценарий оболочки

Ссылаться на:Shell Expect автоматизированное взаимодействие_сценарий оболочки интерактивный автоматический ввод содержимого — блог CSDN