Ru-Board.club
← Вернуться в раздел «Программы»

» Удаленное выполнение на многих компьютерах

Автор: iltmpz
Дата сообщения: 27.07.2007 16:34
Есть сеть, порядка 100 компьютеров win2000 (в одной подсети). Иногда требуется на всех выполнять одинаковые действия (в общем случае, запуск программы).

Подскажите, какой есть софт для этой цели? (поиском пользовался, но нашел что-то не то)

Предполагаю клиент-серверный вариант (т.е. поставить на все компы серверную часть, а потом со своего компа даю команду).

Хотелось бы:
- запускать от текущего или от указанного пользователя.
- иметь результат выполнения для каждого компа (лог скрипта или еще что-то).
- выполнение в интерактивном (для пользователя или для меня) или тихом режиме.
Конечно, необязательно все, это просто пожелания

Пробовал psexec (вызывать скриптом), но он работает криво.
Думал даже поставить всем ssh (а потом как-нибудь скриптом подключаться), но это наверняка будет работать еще кривее.
Автор: Pitersky
Дата сообщения: 27.07.2007 16:43
iltmpz
Radmin
Автор: iltmpz
Дата сообщения: 27.07.2007 17:20
Pitersky
Ну и при чем тут Radmin? Сам пользуюсь постоянно, но это не то:
Нужно выполнение именно на МНОГИХ компьютерах, чтобы я мог дать команду, и она ОДНОВРЕМЕННО выполнилась на всех компах (конечно, лучше не всегда на всех, а чтобы была возможность выбора из списка, например, половины).

(Или в новой версии radmin такую возможность добавили? Не слышал...)
Автор: iltmpz
Дата сообщения: 30.07.2007 11:04
Неужели такого софта нет? Должен же быть.
Я искал по запросам "remote" и "удаленно" - выдало 2 страницы результатов, но ничего похожего на "одновременность" не оказалось. Ставить и проверять все эти программы возможности нет.

Ну или как в таком случае обычно выходят из положения? Неужели заходят radmin'ом на каждый комп по очереди?
Автор: NiktoN
Дата сообщения: 30.07.2007 14:30
iltmpz
в системное администрирование..
Гуглить по слову RemoteExec
Автор: iltmpz
Дата сообщения: 30.07.2007 16:09
NiktoN
Большое спасибо! Похоже, то, что нужно.
В администрировании, правда, не нашлось, как и в программах, зато нашлось в яндексе и варезнике.
Дальше по ссылкам, надеюсь, найду еще что-нибудь подобное
Автор: SvbNeoWork
Дата сообщения: 05.10.2007 11:20
Уже есть...под последнюю версию.
Автор: troya
Дата сообщения: 19.10.2007 05:34
Тема в Варезнике RemoteExec (найдено лекарство на текущую версию)
Автор: iltmpz
Дата сообщения: 29.10.2007 04:15
Пока задача немного изменилась - нужно управлять серверами, например, на всех серверах создать юзера, перезапустить спулер, и т.п.

Возникла немного другая идея на эту тему:
Поставил связку apache+php на левом порту, htdocs закрыл паролем, написал небольшой скрипт на php. Из него при необходимости либо запускается требуемая команда с выводом stdout и stderr в браузер, либо вызывается тот же скрипт на других серверах, и команда запускается уже там. Результат опять же выводится в браузер.
Все параметры скрипту передаются через метод GET, т.е. через строку адреса, так что вызов скрипта производится открытием веб-страницы.
Пока правда реализовал только создание и удаление юзера (командой net user) на указанном списке серверов и еще пару команд по мелочи.

Вот хочу узнать: нет ли уже подобных проектов, не изобретаю ли я "велосипед"?
Насколько оправдана такая штука, может быть, проще заменить это чем-нибудь?
Хотелось бы узнать, кто что думает по этому поводу, стоит ли дальше развивать эту идею?
Автор: iltmpz
Дата сообщения: 22.11.2007 15:30
Продолжаю развивать идею управления компьютерами через web, сформулировал для себя несколько простых принципов, которых собираюсь придерживаться (за небольшими исключениями):
1. Запуск команд производится через HTTP
2. Команды управления и большинство данных передаются методом GET, т.е. через строку адреса, а результат возращается в удобочитаемом виде в формате HTML
3. Ядро системы (основной скрипт) одинаково и равноправно на всех компьютерах
4. Система имеет модульную архитектуру, при этом более сложные задачи решаются разделением на команды, для выполнения которых по HTTP вызывается основной скрипт.

Пример:
Когда надо создать юзера, его надо создать на неск. серверах (с разными правами), создать ему почту и добавить юзера в общий список. Эту задачу решает модуль (который я сейчас пишу): 1 команда ядру: выполнить net user /add на нужных компах, 2-я команда: создать юзера почты (потом для этого напишу отдельный скрипт), 3-я команда: например "echo user password f.i.o. >> users.txt"

В ближайшее время планирую дописать скрипт и выложить куда-нибудь сюда.

Опять же, хотелось бы узнать, кто что думает по этому поводу?
Автор: Romanych11
Дата сообщения: 22.12.2007 22:36
Нужная вещь. Ждём скрипт
Автор: iltmpz
Дата сообщения: 24.12.2007 12:22
Выкладываю 1-ю версию скрипта, жду отзывов.
Пока дополнительных модулей не выкладываю - их функциональность слишком узкая - специфика создания пользователей, добавление в группы, реализация добавления на почтовый сервер и т.п. Буду развивать на основе отзывов и потребностей.

Пока из функциональности прилагаю только основной скрипт, позволяющий:
1. Выполнять пинг указанных машин (вообще несвойственная для системы задача, но вдруг пригодится).
2. Выполнять произвольные команды на произвольных машинах. Это основная задача системы.

Установка:
1. Развернуть архив на C:\ (чтобы появился каталог C:\Apache2)
2. Запустить C:\Apache2\install.bat

Система прописывается как служба Apache2mgt, стартует при запуске системы, не оставляет мусора в реестре. Логи выполненных действий складываются в C:\Apache2\logs
Это просто обычный apache+php (донастроенный мной).
Устанавливать на все машины, которыми надо управлять.

Удаление:
1. Запустить C:\Apache2\uninstall.bat
2. Удалить C:\Apache2

Запуск:
1. После установки открыть в браузере http://localhost:83/ (или с другого компьютера по сети)
2. Для быстрого входа можно использовать
логин: manager
пароль: ns8j7sn1nd
3. В списке выбрать management.php - это главный файл, нажать "выполнить команду"
4. Набрать команды (каждую следующую - с новой строки), и имена (ip) серверов, на которых система установлена, запустить.

Например, для начала можно поставить систему на 1 машину, открыть localhost и выполнить "dir" на localhost (см. пример: C:\Apache2\example.htm)

Настройка:
1. Хотя все экземпляры системы равноправны, это может быть нежелательно с точки зрения безопасности. Для цепочки вызовов самой себя система использует вход с паролем, который передает себе в открытом виде.
Если система выполняет только роль управляемой, можно удалить файл C:\Apache2\htdocs\_auth.inc.php - там хранится логин/пароль и на управляемой системе он не нужен. Также можно удалить C:\Apache2\htdocs\_servers.inc.php - список машин по умолчанию, на которых выполнять скрипт.

2. Рекомендуется создать себе пользователя (или нескольких) для управления этой системой, чтобы не входить под manager - это системная учетная запись этой системы. Команда создания пользователя:
C:\Apache2\bin\htpasswd.exe -b C:\Apache2\htdocs\.htpasswd user_name password
Создать пользователя достаточно на машине, с которой администрировать.

3. Настоятельно рекомендуется сменить пароль для manager (один и тот же на всех управляющих и управляемых машинах):
C:\Apache2\bin\htpasswd.exe -b C:\Apache2\htdocs\.htpasswd manager password

4. По умолчанию, система работает на 83 порту. При желании можно это изменить:
В C:\Apache2\htdocs\_management.inc.php изменить строку: $PORT="83";
И тот же порт выставить в C:\Apache2\conf\httpd.conf

5. Иногда может быть полезно изменить максимальное время выполнения скрипта:
В C:\Apache2\php\php.ini "max_execution_time = 300" - 300 секунд - изменить на то, что нужно.

Конечно, ничто не мешает при изменении этих настроек на всех компах сети воспользоваться самой этой программой

Примеры использования:
1. результат выполнения команды "dir" на машинах "localhost", "localhost" можно посмотреть в C:\Apache2\example.htm

2. возможно, на всех машинах полезно будет выполнить команду:
echo y|cacls c:\apache2 /P администраторы:F /T /C
это оставит доступ к C:\Apache2 в NTFS только админам - конечно, пароли в C:\Apache2\htdocs\.htpasswd зашифрованы, но мало ли что...

3. Создание пользователей:
net user "username" "passwd" /fullname:"Ф И О" /comment:"описание пользователя" /add 2>&1
Обратите внимание на окончание "2>&1". Без этого Вы не увидите в окне ошибок выполнения (stderr). Рекомендуется использовать это для получения информации об ошибках.

4. В состав программы я включил wget. Это маленькая программа для закачки файлов, но с большими возможностями. Наприсер, с помощью нее на каждый компьютер можно загружать произвольные файлы через тот же 83-й порт http, чтобы в дальнейшем выполнять их. Можно даже обновить сами файлы этого скрипта. (Возможно, в дальнейшем напишу модуль для этой цели).

Заключение:
Будте осторожны: проверьте, как команда работает в консоли, прежде чем запускать ее на всех машинах в сети. Убедитесь, что она делает то, что нужно и не попросит нажать какую-нибудь клавишу - это просто приведет к зависанию выполняемой команды на всех машинах.
Жду отзывов, комментариев и предложений.
Тема на форуме: http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=24150
С уважением, iltmpz
При распространении и доработке системы просьба сохранять ссылку на автора.
Скачать: http://rapidshare.com/files/78727765/Apache2mgt.rar
Автор: iltmpz
Дата сообщения: 11.01.2008 11:06
Написал модуль для перезапуска службы (нам надо иногда перезапускать службу activefax и radmin) на сервере 192.168.30.13.
Можно сказать, простейший вариант: только 1 сервер, просто выполнение на нем 3 команд нажатием 1 кнопки и 2 команд нажатием другой кнопки:

Код:
<?php
/*
* activefax server management
*/
error_reporting(E_ALL);
define('IN_MGT',true);
{include("_management.inc.php");}

$start_microtime=get_micro_time();

if(!isset($_POST["action"]))form();
else switch($_POST["action"])
{
case "Restart ActiveFax":
executeurl("http://$USER:$PASSWORD@192.168.30.13:83/management.php?action=exec&listcmd=net+stop+activefax-server-service+2%3E%261%0D%0Aecho+atz%3Ecom1%0D%0Anet+start+activefax-server-service+2%3E%261%0D%0A&listsrv=192.168.30.13%0D%0A&doitnow=on");
break;
case "Restart Radmin":
executeurl("http://$USER:$PASSWORD@192.168.30.13:83/management.php?action=exec&listcmd=net+stop+%22remote+administrator+service%22+2%3E%261%0D%0Anet+start+%22remote+administrator+service%22+2%3E%261&listsrv=192.168.30.13%0D%0A&doitnow=on");
break;
default:echo "Неверное действие";
}
echo "<br>Время генерации страницы: ".(get_micro_time()-$start_microtime)." секунд(ы)";

function form()
{
echo '<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>'.$_SERVER["SERVER_NAME"].' - Система управления службами сервера</title>
</head>
<body>';
echo '<h3>Система управления ActiveFax на сервере "'.$_SERVER["SERVER_NAME"].'"</h3>';
echo '<form action="?" method="POST">
<input type="submit" name="action" value="Restart ActiveFax"><br>
<input type="submit" name="action" value="Restart Radmin"><br>
</form>';
}
?>
Автор: iltmpz
Дата сообщения: 27.07.2007 16:34
Есть сеть, порядка 100 компьютеров win2000 (в одной подсети). Иногда требуется на всех выполнять одинаковые действия (в общем случае, запуск программы).

Подскажите, какой есть софт для этой цели? (поиском пользовался, но нашел что-то не то)

Предполагаю клиент-серверный вариант (т.е. поставить на все компы серверную часть, а потом со своего компа даю команду).

Хотелось бы:
- запускать от текущего или от указанного пользователя.
- иметь результат выполнения для каждого компа (лог скрипта или еще что-то).
- выполнение в интерактивном (для пользователя или для меня) или тихом режиме.
Конечно, необязательно все, это просто пожелания

Пробовал psexec (вызывать скриптом), но он работает криво.
Думал даже поставить всем ssh (а потом как-нибудь скриптом подключаться), но это наверняка будет работать еще кривее.
Автор: Pitersky
Дата сообщения: 27.07.2007 16:43
iltmpz
Radmin
Автор: iltmpz
Дата сообщения: 27.07.2007 17:20
Pitersky
Ну и при чем тут Radmin? Сам пользуюсь постоянно, но это не то:
Нужно выполнение именно на МНОГИХ компьютерах, чтобы я мог дать команду, и она ОДНОВРЕМЕННО выполнилась на всех компах (конечно, лучше не всегда на всех, а чтобы была возможность выбора из списка, например, половины).

(Или в новой версии radmin такую возможность добавили? Не слышал...)
Автор: iltmpz
Дата сообщения: 30.07.2007 11:04
Неужели такого софта нет? Должен же быть.
Я искал по запросам "remote" и "удаленно" - выдало 2 страницы результатов, но ничего похожего на "одновременность" не оказалось. Ставить и проверять все эти программы возможности нет.

Ну или как в таком случае обычно выходят из положения? Неужели заходят radmin'ом на каждый комп по очереди?
Автор: NiktoN
Дата сообщения: 30.07.2007 14:30
iltmpz
в системное администрирование..
Гуглить по слову RemoteExec
Автор: iltmpz
Дата сообщения: 30.07.2007 16:09
NiktoN
Большое спасибо! Похоже, то, что нужно.
В администрировании, правда, не нашлось, как и в программах, зато нашлось в яндексе и варезнике.
Дальше по ссылкам, надеюсь, найду еще что-нибудь подобное
Автор: SvbNeoWork
Дата сообщения: 05.10.2007 11:20
Уже есть...под последнюю версию.
Автор: troya
Дата сообщения: 19.10.2007 05:34
Тема в Варезнике RemoteExec (найдено лекарство на текущую версию)
Автор: iltmpz
Дата сообщения: 29.10.2007 04:15
Пока задача немного изменилась - нужно управлять серверами, например, на всех серверах создать юзера, перезапустить спулер, и т.п.

Возникла немного другая идея на эту тему:
Поставил связку apache+php на левом порту, htdocs закрыл паролем, написал небольшой скрипт на php. Из него при необходимости либо запускается требуемая команда с выводом stdout и stderr в браузер, либо вызывается тот же скрипт на других серверах, и команда запускается уже там. Результат опять же выводится в браузер.
Все параметры скрипту передаются через метод GET, т.е. через строку адреса, так что вызов скрипта производится открытием веб-страницы.
Пока правда реализовал только создание и удаление юзера (командой net user) на указанном списке серверов и еще пару команд по мелочи.

Вот хочу узнать: нет ли уже подобных проектов, не изобретаю ли я "велосипед"?
Насколько оправдана такая штука, может быть, проще заменить это чем-нибудь?
Хотелось бы узнать, кто что думает по этому поводу, стоит ли дальше развивать эту идею?
Автор: iltmpz
Дата сообщения: 22.11.2007 15:30
Продолжаю развивать идею управления компьютерами через web, сформулировал для себя несколько простых принципов, которых собираюсь придерживаться (за небольшими исключениями):
1. Запуск команд производится через HTTP
2. Команды управления и большинство данных передаются методом GET, т.е. через строку адреса, а результат возращается в удобочитаемом виде в формате HTML
3. Ядро системы (основной скрипт) одинаково и равноправно на всех компьютерах
4. Система имеет модульную архитектуру, при этом более сложные задачи решаются разделением на команды, для выполнения которых по HTTP вызывается основной скрипт.

Пример:
Когда надо создать юзера, его надо создать на неск. серверах (с разными правами), создать ему почту и добавить юзера в общий список. Эту задачу решает модуль (который я сейчас пишу): 1 команда ядру: выполнить net user /add на нужных компах, 2-я команда: создать юзера почты (потом для этого напишу отдельный скрипт), 3-я команда: например "echo user password f.i.o. >> users.txt"

В ближайшее время планирую дописать скрипт и выложить куда-нибудь сюда.

Опять же, хотелось бы узнать, кто что думает по этому поводу?
Автор: Romanych11
Дата сообщения: 22.12.2007 22:36
Нужная вещь. Ждём скрипт
Автор: iltmpz
Дата сообщения: 24.12.2007 12:22
Выкладываю 1-ю версию скрипта, жду отзывов.
Пока дополнительных модулей не выкладываю - их функциональность слишком узкая - специфика создания пользователей, добавление в группы, реализация добавления на почтовый сервер и т.п. Буду развивать на основе отзывов и потребностей.

Пока из функциональности прилагаю только основной скрипт, позволяющий:
1. Выполнять пинг указанных машин (вообще несвойственная для системы задача, но вдруг пригодится).
2. Выполнять произвольные команды на произвольных машинах. Это основная задача системы.

Установка:
1. Развернуть архив на C:\ (чтобы появился каталог C:\Apache2)
2. Запустить C:\Apache2\install.bat

Система прописывается как служба Apache2mgt, стартует при запуске системы, не оставляет мусора в реестре. Логи выполненных действий складываются в C:\Apache2\logs
Это просто обычный apache+php (донастроенный мной).
Устанавливать на все машины, которыми надо управлять.

Удаление:
1. Запустить C:\Apache2\uninstall.bat
2. Удалить C:\Apache2

Запуск:
1. После установки открыть в браузере http://localhost:83/ (или с другого компьютера по сети)
2. Для быстрого входа можно использовать
логин: manager
пароль: ns8j7sn1nd
3. В списке выбрать management.php - это главный файл, нажать "выполнить команду"
4. Набрать команды (каждую следующую - с новой строки), и имена (ip) серверов, на которых система установлена, запустить.

Например, для начала можно поставить систему на 1 машину, открыть localhost и выполнить "dir" на localhost (см. пример: C:\Apache2\example.htm)

Настройка:
1. Хотя все экземпляры системы равноправны, это может быть нежелательно с точки зрения безопасности. Для цепочки вызовов самой себя система использует вход с паролем, который передает себе в открытом виде.
Если система выполняет только роль управляемой, можно удалить файл C:\Apache2\htdocs\_auth.inc.php - там хранится логин/пароль и на управляемой системе он не нужен. Также можно удалить C:\Apache2\htdocs\_servers.inc.php - список машин по умолчанию, на которых выполнять скрипт.

2. Рекомендуется создать себе пользователя (или нескольких) для управления этой системой, чтобы не входить под manager - это системная учетная запись этой системы. Команда создания пользователя:
C:\Apache2\bin\htpasswd.exe -b C:\Apache2\htdocs\.htpasswd user_name password
Создать пользователя достаточно на машине, с которой администрировать.

3. Настоятельно рекомендуется сменить пароль для manager (один и тот же на всех управляющих и управляемых машинах):
C:\Apache2\bin\htpasswd.exe -b C:\Apache2\htdocs\.htpasswd manager password

4. По умолчанию, система работает на 83 порту. При желании можно это изменить:
В C:\Apache2\htdocs\_management.inc.php изменить строку: $PORT="83";
И тот же порт выставить в C:\Apache2\conf\httpd.conf

5. Иногда может быть полезно изменить максимальное время выполнения скрипта:
В C:\Apache2\php\php.ini "max_execution_time = 300" - 300 секунд - изменить на то, что нужно.

Конечно, ничто не мешает при изменении этих настроек на всех компах сети воспользоваться самой этой программой

Примеры использования:
1. результат выполнения команды "dir" на машинах "localhost", "localhost" можно посмотреть в C:\Apache2\example.htm

2. возможно, на всех машинах полезно будет выполнить команду:
echo y|cacls c:\apache2 /P администраторы:F /T /C
это оставит доступ к C:\Apache2 в NTFS только админам - конечно, пароли в C:\Apache2\htdocs\.htpasswd зашифрованы, но мало ли что...

3. Создание пользователей:
net user "username" "passwd" /fullname:"Ф И О" /comment:"описание пользователя" /add 2>&1
Обратите внимание на окончание "2>&1". Без этого Вы не увидите в окне ошибок выполнения (stderr). Рекомендуется использовать это для получения информации об ошибках.

4. В состав программы я включил wget. Это маленькая программа для закачки файлов, но с большими возможностями. Наприсер, с помощью нее на каждый компьютер можно загружать произвольные файлы через тот же 83-й порт http, чтобы в дальнейшем выполнять их. Можно даже обновить сами файлы этого скрипта. (Возможно, в дальнейшем напишу модуль для этой цели).

Заключение:
Будте осторожны: проверьте, как команда работает в консоли, прежде чем запускать ее на всех машинах в сети. Убедитесь, что она делает то, что нужно и не попросит нажать какую-нибудь клавишу - это просто приведет к зависанию выполняемой команды на всех машинах.
Жду отзывов, комментариев и предложений.
Тема на форуме: http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=24150
С уважением, iltmpz
При распространении и доработке системы просьба сохранять ссылку на автора.
Скачать: http://rapidshare.com/files/78727765/Apache2mgt.rar
Автор: iltmpz
Дата сообщения: 11.01.2008 11:06
Написал модуль для перезапуска службы (нам надо иногда перезапускать службу activefax и radmin) на сервере 192.168.30.13.
Можно сказать, простейший вариант: только 1 сервер, просто выполнение на нем 3 команд нажатием 1 кнопки и 2 команд нажатием другой кнопки:

Код:
<?php
/*
* activefax server management
*/
error_reporting(E_ALL);
define('IN_MGT',true);
{include("_management.inc.php");}

$start_microtime=get_micro_time();

if(!isset($_POST["action"]))form();
else switch($_POST["action"])
{
case "Restart ActiveFax":
executeurl("http://$USER:$PASSWORD@192.168.30.13:83/management.php?action=exec&listcmd=net+stop+activefax-server-service+2%3E%261%0D%0Aecho+atz%3Ecom1%0D%0Anet+start+activefax-server-service+2%3E%261%0D%0A&listsrv=192.168.30.13%0D%0A&doitnow=on");
break;
case "Restart Radmin":
executeurl("http://$USER:$PASSWORD@192.168.30.13:83/management.php?action=exec&listcmd=net+stop+%22remote+administrator+service%22+2%3E%261%0D%0Anet+start+%22remote+administrator+service%22+2%3E%261&listsrv=192.168.30.13%0D%0A&doitnow=on");
break;
default:echo "Неверное действие";
}
echo "<br>Время генерации страницы: ".(get_micro_time()-$start_microtime)." секунд(ы)";

function form()
{
echo '<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>'.$_SERVER["SERVER_NAME"].' - Система управления службами сервера</title>
</head>
<body>';
echo '<h3>Система управления ActiveFax на сервере "'.$_SERVER["SERVER_NAME"].'"</h3>';
echo '<form action="?" method="POST">
<input type="submit" name="action" value="Restart ActiveFax"><br>
<input type="submit" name="action" value="Restart Radmin"><br>
</form>';
}
?>

Страницы: 1

Предыдущая тема: Проблемы с VMWare


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.