У цьому підручнику завдання будуть автоматизовані за допомогою Expect.


Expect – це сценарій мови автоматизації. Це дозволяє емулювати кожне натискання клавіш у сеансі. Ви набираєте команди для доставки та відповіді, щоб передбачити (або очікувати). Коли надійде очікувана відповідь, ви вводите іншу команду. Цей процес повторюється до припинення сценарію.

Сценарій очікування – це вся автоматизована двостороння розмова. У сценарії «За винятком», сценарій діалогового вікна з комп’ютерів, що надсилають і приймають, сценаріюється. Загальне використання сценаріїв Expects полягає в автоматизації сеансів SSH між локальним комп’ютером та віддаленим сервером.

Налаштування очікування

За винятком того, що доступний як встановлений програмний пакет для більшості дистрибутивів Linux. Використовуйте менеджер пакунків, щоб завантажити та встановити Expect разом із будь-якими пов’язаними пакетами та / або залежностями.

Якщо ви використовуєте Ubuntu, введіть наступний рядок у командному рядку для встановлення Expect:

$ apt – get install очікують

Якщо ви використовуєте CentOS, введіть наступне:

# yum встановити очікуваний-devel

Це може зайняти деякий час, але як тільки він буде встановлений, очікується запуск з терміналу.

Написання сценарію SSH в очікуванні

Вам потрібно буде написати обидва кінці діалогового вікна. Це означає, що ви повинні написати команди, які ви хочете відправити під час сеансу, та відповіді, що очікуються з віддаленого сервера. Для запуску сценарій повинен бути виконаним. Для того щоб зробити сценарій Expect незалежною виконуваною програмою, необхідно виконати три кроки. Місце очікування повинно бути включене в сценарій.

Якщо припустити, що у вашій системі місце розташування Expect / usr / bin / очікувати введіть наступне як перший рядок у вашому сценарії очікування:

#! / usr / bin / очікувати -f

  • Шебанг (#!) Це потрібно для того, щоб вказати очікувати як програму, що використовується для інтерпретації сценарію.
  • The –F Перемикач використовується для того, щоб сказати, що очікує, що це буде читання команд з файлу.

Сценарій повинен бути збережений у вигляді оболонки (). У цьому прикладі ми збережемо його як expscript.sh.

Зробіть сценарій виконуваним.

Для цього потрібні зміни дозволу на файл сценарію, що дозволяє його виконувати.

Введіть наступне в термінал, щоб змінити дозволи на файл, зробивши його виконуваним.

$ chmod 755 expscript.sh

Сценарій

Другий рядок у вашому сценарії використовує нерест команда, яка запускає зовнішню команду. У цьому прикладі, оскільки ми маємо справу з SSH, ssh команда використовується для запуску сеансу SSH з віддаленим сервером, “remote.server.com“.

spawn ssh remote.server.com

При спробі підключення до віддаленого сервера через SSH вам буде запропоновано ввести пароль. Як ми говорили раніше, очікувані сценарії складаються з діалогу з обох машин, отже, очікувані відповіді повинні бути також включені в сценарій..

Передбачувані відповіді повинні бути виключені очікувати команда і міститься в подвійних лапках:

очікувати "пароль: "

Примітка. Деякі сервери повернуть “Пароль” з великим літером “P”. Якщо сценарії очікують загального “p”, це може спричинити збій сценарію. В якості вирішення може використовуватися підстановка. Цей рядок буде відредаговано так:

очікувати "* ssword: "

Або ще простіше:

очікувати "*: "

Цей метод може бути використаний для багатьох очікуваних відповідей з віддаленої машини. Потім вам доведеться ввести свій пароль. Команди, які потрібно надіслати з локального комп’ютера, виключається надіслати команда і, як і очікувані відповіді, повинні бути укладені у подвійні лапки. Крім того, надіслані команди повинні включати твердий зворот (\ r) наприкінці, в межах подвійних лапок.

Припускаючи пароль P @ $$ w0rd, наступний рядок був би.

надіслати "P @ $$ w0rd \ r

У цей момент вам слід зустріти підказку користувача, щоб вказати її як очікувану інформацію:

очікувати "$ "

У цей момент ви можете виписати будь-який список команд, які ви хотіли б виконати, а також очікувані відповіді з віддаленого сервера. Наприкінці списку автоматизованих команд передбачте запит користувача та запустіть вихід, щоб закрити сеанс.

очікувати "$ "
надіслати "вихід \ r"

Тому весь сценарій повинен бути:

#! / usr / bin / очікувати -f
spawn ssh remote.server.com
очікувати "пароль: "
надіслати "P @ $$ w0rd \ r"
очікувати "$ "
…… ## Різні автоматизовані команди ##
очікувати "$ "
надіслати "вихід \ r"

Після збереження файлу не забудьте дотримуватися наведених вище інструкцій щодо зміни дозволів, щоб зробити його виконаним.

Примітка. Якщо у вас виникли проблеми зі сценарієм, спробуйте дотримуватися його самостійно та запустити його вручну, зазначаючи відповіді сервера, щоб переконатися, що очікувані відповіді у вашому сценарії точні та що відправлені команди не містять помилок..

Як легко створити сценарій очікування

Чудовим способом побудови сценарію Expect є використання програми запису оболонок, відомої як Autoexpect. Автоочікує роботу, записуючи сеанс оболонки. Кожен відповідь натискання клавіші та оболонки записується та записується у сценарій очікування, script.exp.

Враховуючи динамічний характер комп’ютерів, жоден два сеанси не можуть бути абсолютно подібними, тому запуск нераціонального сценарію, сформованого за один сеанс, може не працювати, як очікувалося, при повторному запуску. Як результат, більшість сценаріїв, створених за допомогою Autoexpect, повинні бути переглянуті, відредаговані та підрізані, щоб мати постійний бажаний ефект.

Якщо ви використовуєте Ubuntu, виконайте такі дії, щоб встановити Autoexpect:

$ sudo apt – отримати установку очікувати-розробити

  • Це завантажить утиліту та всі необхідні залежності.

Якщо ви використовуєте CentOS, виконайте такі дії, щоб встановити Autoexpect:

# yum встановити очікуваний-devel

Щоб скористатися автоматичним очікуванням, введіть наступне:

$ Автоочікуйте

Після активації функції Autoexpect у вашому терміналі з’явиться таке повідомлення:

Початок автоматичного очікування, файл – script.exp

Кожен набір клавіш та всі наступні відповіді, що відображаються на екрані, записуються у файл script.exp і відформатовано у сценарії очікування.

Щоб зупинити автоматичне очікування та припинити запис у файл script.exp, натисніть Ctrl-D.

Сформований script.exp файл буде дуже довгим, доповнить загальною стенограмою сеансу та додатковими коментарями. Як було зазначено раніше, перегляньте та відредагуйте створений файл, протестуючи його на наявність помилок. Хоча це може зайняти деякий час, щоб виправитись, набагато простіше, ніж спробувати створити складні сценарії вручну.

Тепер у вас є повністю функціональний скрипт, який потрібно запускати повторно, за необхідності, з легкістю, і засоби легко створювати більше сценаріїв.

Ознайомтеся з трьома найкращими послугами веб-хостингу

FastComet

Стартова ціна:
2,95 дол


Надійність
9.7


Ціноутворення
9.5


Користувач
9.7


Підтримка
9.7


Особливості
9.6

Прочитайте відгуки

Відвідайте FastComet

А2 хостинг

Стартова ціна:
3,92 дол


Надійність
9.3


Ціноутворення
9,0


Користувач
9.3


Підтримка
9.3


Особливості
9.3

Прочитайте відгуки

Відвідайте хостинг A2

ChemiCloud

Стартова ціна:
2,76 дол


Надійність
10


Ціноутворення
9.9


Користувач
9.9


Підтримка
10


Особливості
9.9

Прочитайте відгуки

Відвідайте ChemiCloud

Пов’язані статті “Як”

  • Як налаштувати SSH на Ubuntu 16.04 VPS або на виділеному сервері
    проміжний
  • Як використовувати та керувати SSH-ключами за допомогою cPanel
    проміжний
  • Як налаштувати SSH для вашого Ubuntu 18.04 VPS або виділеного сервера
    проміжний
  • Як налаштувати сервер VPN Linux з клієнта Windows
    проміжний
  • Як підключитися до сервера за допомогою SSH на Linux та Mac
    проміжний
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me