Замечание: эта статья предназначена для начинающих пользователей и администраторов UNIX®. Более опытные пользователи 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. Диаграмма сети
Проделайте следующие действия:
- Установите RHEL Version 4.0 Update 3 на все машины в вашей сети, в нашем случае -
node1.my.com, node2.my.com, и node3.my.com, показанные на рисунке 1. (Обратите внимание: приведенные ниже листинги являются результатом выполнения всех инструкций, перечисленных в списке). Для написания статьи я использовал базовый дистрибутив RHEL4. - Убедитесь, что
rsh-server-0.17-25.1установлен на всех машинах, как показано в листинге 1. - Если
rsh-server-0.17-25.1уже установлен, вы обнаружите на ваших машинах файлыrsh,rloginиrexecв директории /etc/xinetd.d/ , как показано в листинге 2 (Внимание: сервисыrsh,rloginиrexecпо умолчанию заблокированы).
- В случае, если
rsh-server-0.17-25.1не установлен, установите его с дисков RHEL4, как показано в листинге 3. Также вы можете использовать команду#system-config-packagesдля установки сервера rsh из rpm.
Листинг 1. rsh RPM
#rpm -qa|grep rsh-server
rsh-server-0.17-25.1
|
Листинг 2. Сервисы rsh,rlogin и rexec
/etc/xinetd.d
-rw-r--r-- 1 root root 361 Nov 23 2004 rexec
-rw-r--r-- 1 root root 378 Nov 23 2004 rlogin
-rw-r--r-- 1 root root 431 Nov 23 2004 rsh
#cat /etc/xinetd.d/rsh
service shell
{
socket_type = stream
wait = no
user = root
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.rshd
disable = yes
}
#cat /etc/xinetd.d/rogin
service login
{
socket_type = stream
wait = no
user = root
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.rlogind
disable = yes
}
#cat /etc/xinetd.d/rexec
service exec
{
socket_type = stream
wait = no
user = root
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.rexecd
disable = yes
}
|
Листинг 3. Инсталляция rsh
#rpm -ivh rsh-server-0.17-25.1.i386.rpm
|
Конфигурация для root и обычных пользователей
Вам понадобится использование двух следующих конфигураций:
-
Пользователь
Root - Обычный пользователь, в нашем случае -
myuser
Рассмотрим сначала конфигурацию rsh для администратора - пользователя root. Чтобы сконфигурировать rsh для root, проделайте следующие шаги:
- Зайдите в систему как
root - Включите сервисы
rsh,rloginиrexecна всех машинах, как показано в листинге 4. (Внимание: приведенные ниже листинги являются результатом выполнения всех инструкций, перечисленных в списке.) Вы можете использовать для разблокировки сервисов команды#system-config-servicesили#ntsysv. Если вы уже хорошо разбираетесь в Unix, то можете вручную проделать необходимые изменения в соответствующих файлах. - Создайте файл
/root/.rhostsна всех машинах, как показано в листинге 5. Включите в этот файл имена всех машин, на которых хотите запускать команды без введения пароля. - Добавьте записи
rshиrloginв файл/etc/securetty, как показано в листинге 6. - Проведя перечисленные изменения, на всех машинах перезапустите сервис
xinetd, как показано в листинге 7. - Протестируйте вашу среду с помощью команды
#rsh node3 date. Эта команда позволит вам увидеть дату, установленную на компьютереnode3.my.com, как показано в листинге 8. В случае, если вы хотите зайти на node3, выполните команду#rsh node3, как показано в листинге 9.
Листинг 4. Сервисы rsh, rlogin и rexec
#cat /etc/xinetd.d/rsh
service shell
{
socket_type = stream
wait = no
user = root
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.rshd
disable = no
}
#cat /etc/xinetd.d/rogin
service login
{
socket_type = stream
wait = no
user = root
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.rlogind
disable = no
}
#cat /etc/xinetd.d/rexec
service exec
{
socket_type = stream
wait = no
user = root
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.rexecd
disable = no
}
|
Листинг 5. Файл /root/.rhosts
#cat /root/.rhosts
node1.my.com
node2.my.com
node3.my.com
|
Листинг 6. Файл /etc/securetty
#cat /etc/securetty
rlogin
rsh
console
vc/1
vc/2
..
..
|
Листинг 7. Запуск и перезапуск сервиса xinetd
#service xinetd stop/start OR #service xinetd restart
|
Листинг 8. Исполнение комады date на node3 с компьютера node1
node1.my.com>#rsh node3 date
Mon Aug 28 17:44:48 IST 2006
|
Листинг 9. Получение доступа к node3 без введения пароля
node1>#rsh node3
node3>#
|
Теперь настроим rsh для обычного пользователя, в данном случае - myuser. Предположим, что пользователь с именем myuser уже существует на всех машинах. Рассмотрим ситуацию, когда пользователь myuser может исполнять команды на удаленном компьютере без введения на нем пароля.
- Зайдите как
root. - Включите сервисы
rsh,rloginиrexecна всех машинах, как показано в листинге 4. - Создайте файл
/etc/hosts.equiv, как показано в листинге 10. - Далее перезапустите сервис
xinetd, как показано в листинге 7. - Зайдите как
myuser, как показано в листинге 11. - Проверьте дату в вашей среде, исполнив команду
$rsh node3 date. Результатом будет получение даты на машинеnode3.my.com, как показано в листинге 12.
Листинг 10. Файл /etc/hosts.equiv
#cat /etc/hosts.equiv
node1.my.com myuser
node2.my.com myuser
node3.my.com myuser
|
Листинг 11. Вход под именем myuser
node1>#su - myuser
node1>$
|
Листинг 12. Выполнение команды date на node3 от имени myuser
node1>$rsh node3 date
Mon Aug 28 17:49:28 IST 2006
|
Вывод: использование rsh экономит ваше время!
В этой статье вы научились настраивать rsh в сетевой среде таким образом, чтобы быстрее и проще выполнять необходимые действия. Это не только экономит время, но и дает вам большую гибкость за счет возможности выполнять команды без введения пароля на большом количестве машин. В части 1 была рассмотрена настройка SSH, другой возможности последовательного исполнения команд в вашем окружении без введения пароля.
Научиться
- Оригинал статьи: Run commands sequentially across a cluster from a UNIX server, Part 2: Remote shell (rsh) (EN).
- "Последовательный запуск команд с Unix-сервера на кластере. Часть 1" (developerWorks, август 2006): научитесь настраивать Secure Shell (SSH) на серверах IBM System p и System x.
-
Web-сайт о RSH: посетите этот сайт, чтобы узнать больше о rsh.(EN)
-
Remote Shell: все, что вы хотели знать об удаленном shell.(EN)
-
HOWTOs on Linux: здесь вы можете узнать больше о Linux, или найти ответы на вопросы.(EN)
-
IBM Systems: хотите узнать еще больше? Раздел developerWorks, посвященный системам IBM Systems, включает тысячи информационных статей и учебники для начинающих, среднего уровня и продвинутых пользователей.(EN)
-
Технические мероприятия и webcast-конференции developerWorks: оставайтесь в курсе технических событий и webcast-конференций developerWorks .(EN)
Получить продукты и технологии
-
Ознакомительные версии программного обеспечение IBM: создайте новый проект при помощи программного обеспечения, которое вы можете скачать непосредственно с сайта developerWorks.(EN)
Обсудить
- Примите участие в обсуждении материала на форуме.
-
Примите участие в обсуждении материала на форумах IBM Systems, блогах на developerWorks и вступите в сообщество developerWorks.(EN)
Хэриш Чаухан (Harish Chauhan) работает в IBM с 1998. Из последних семи лет в IBM он пять лет работал в India Research Lab и более полутора лет - в IBM T.J.Watson Research Center. Хэриш в настоящее время руководит Linux Center of Competency в Бангалоре, Индия. Вы можете связаться с ним по адресу hchauhan@in.ibm.com.