Послідовний запуск команд на кластері з unix-сервера

Вступ: реалізація віддаленого запуску команди на декількох комп'ютерах

Коли ви чуєте, як хтось говорить про shell, чи розумієте ви точно, що мається на увазі? Зазвичай на будь-який UNIX-машині на початку сеансу роботи з терміналом (terminal session) ви вводите команди, наприклад useradd username. passwd password. system-config-printers і так далі. Цей shell (командний процесор) є локальним і працює на вашій машині, таким чином, всі ваші команди виконують дії на вашій машині локально.

А що, якщо ви хочете виконати команду на декількох машинах: наприклад, встановити дату на всіх комп'ютерах локальної мережі? Один варіант - зайти на кожну машину окремо і виконати команду date. Більш вдалий варіант - автоматизувати процедуру, зайшовши на сервер і за допомогою rsh встановивши дату і час на всіх інших комп'ютерах по черзі. Щоб встановити дату дистанційно, вам знадобиться встановити на комп'ютерах такі інструменти, як TSecure Shell (SSH) і remote shell (rsh). Як правило, коли ви намагаєтеся отримати доступ до віддаленого комп'ютера, вам необхідно ввести пароль. Однак, ви можете налаштувати SSH і rsh в вашому оточенні таким чином, щоб система не запитувала пароль. У цій статті пояснюється як конфігурувати rsh у вашому середовищі. У частині 1 розглядався SSH.

Обладнання, програмне забезпечення, настройка

Описані в статті завдання вирішені на наступному обладнанні і програмному забезпеченні:

  • сервери IBM System p ™ і System x ™, такі як System p520 і System x345
  • Red Hat Enterprise Linux® Version 4.0 Update 3 (RHEL Version 4.0 Update 3)
Малюнок 1. Діаграма мережі

Виконайте наступні дії:

  1. Встановіть RHEL Version 4.0 Update 3 на всі машини у вашій мережі, в нашому випадку - node1.my.com, node2.my.com, і node3.my.com. показані на малюнку 1. (Зверніть увагу: наведені нижче листинги є результатом виконання всіх інструкцій, перерахованих в списку). Для написання статті я використовував базовий дистрибутив RHEL4.
  2. Переконайтеся, що rsh-server-0.17-25.1 встановлений на всіх машинах, як показано в лістингу 1.
  3. Якщо rsh-server-0.17-25.1 вже встановлено, ви виявите на ваших машинах файли rsh. rlogin і rexec в директорії /etc/xinetd.d/. як показано в лістингу 2 (Увага. сервіси rsh. rlogin і rexec за замовчуванням заблоковані).
  4. У разі, якщо rsh-server-0.17-25.1 не встановлено, встановіть його з дисків RHEL4, як показано в лістингу 3. Також ви можете використовувати команду # system-config-packages для установки сервера rsh з rpm.
Лістинг 1. rsh RPM
Лістинг 2. Сервіси rsh, rlogin і rexec
Лістинг 3. Інсталяція rsh

Конфігурація для root і звичайних користувачів

Вам знадобиться використання двох наступних конфігурацій:

  • Користувач Root
  • Звичайний користувач, в нашому випадку - myuser

Розглянемо спочатку конфігурацію rsh для адміністратора - користувача root. Щоб настроїти rsh для root. виконайте наступні кроки:

  1. Зайдіть в систему як root
  2. Увімкніть сервіси rsh. rlogin і rexec на всіх машинах, як показано в лістингу 4. (Увага: наведені нижче листинги є результатом виконання всіх інструкцій, перерахованих в списку.) Ви можете використовувати для розблокування сервісів команди # system-config-services або #ntsysv. Якщо ви вже добре розбираєтеся в Unix, то можете вручну виконати необхідні зміни у відповідних файлах.
  3. Створіть файл /root/.rhosts на всіх машинах, як показано в лістингу 5. Включіть в цей файл імена всіх машин, на яких хочете запускати команди без введення пароля.
  4. Додайте записи rsh і rlogin в файл / etc / securetty. як показано в лістингу 6.
  5. Провівши перераховані зміни, на всіх машинах перезапустіть сервіс xinetd. як показано в лістингу 7.
  6. Протестуйте вашу середу за допомогою команди #rsh node3 date. Ця команда дозволить вам побачити дату, встановлену на комп'ютері node3.my.com. як показано в лістингу 8. В разі, якщо ви хочете зайти на node3, виконайте команду #rsh node3. як показано в лістингу 9.
Лістинг 4. Сервіси rsh, rlogin і rexec
Лістинг 5. Файл /root/.rhosts
Лістинг 6. Файл / etc / securetty
Лістинг 7. Запуск і перезапуск сервісу xinetd
Лістинг 8. Виконання комади date на node3 з комп'ютера node1
Лістинг 9. Отримання доступу до node3 без введення пароля

Тепер налаштуємо rsh для звичайного користувача, в даному випадку - myuser. Припустимо, що користувач з ім'ям myuser вже існує на всіх машинах. Розглянемо ситуацію, коли користувач myuser може виконувати команди на віддаленому комп'ютері без введення на ньому пароля.

  1. Зайдіть як root.
  2. Увімкніть сервіси rsh. rlogin і rexec на всіх машинах, як показано в лістингу 4.
  3. Створіть файл /etc/hosts.equiv. як показано в лістингу 10.
  4. Далі запустіть сервіс xinetd. як показано в лістингу 7.
  5. Зайдіть як myuser. як показано в лістингу 11.
  6. Перевірте дату у вашому середовищі, виконавши команду $ rsh node3 date. Результатом буде отримання дати на машині node3.my.com. як показано в лістингу 12.
Лістинг 10. Файл /etc/hosts.equiv
Лістинг 11. Вхід під ім'ям myuser
Лістинг 12. Виконання команди date на node3 від імені myuser

Висновок: використання rsh економить ваш час!

У цій статті ви навчилися налаштовувати rsh в мережевому середовищі таким чином, щоб швидше і простіше виконувати необхідні дії. Це не тільки економить час, а й дає вам велику гнучкість за рахунок можливості виконувати команди без введення пароля на великій кількості машин. У частині 1 було розглянуто настройка SSH, іншої можливості послідовного виконання команд в вашому оточенні без введення пароля.

Ресурси для скачування

Схожі теми