s.lobanov Posted October 26, 2010 · Report post Задача весьма простая, один сервер должен инициировать запуск скрипта с параметрами на другом сервером, получить от него ответ. Понятно, что можно это сделать тупо по ssh, но хочется что-то более изящное типа какого-нибудь xml-request(чтобы не придумывать свой протокол как передавать массив данных и получать массив в ответ), но поднимать apache не очень хочется. Может есть какой-то специальный протокол, созданный для того, чтобы с одного сервера дёргать скрипты на другом? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
sdy_moscow Posted October 26, 2010 · Report post Вы как блондинка прямо... "Хочу родить ребенка, но не хочу быть беременной..." Определитесь. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
GloooM Posted October 26, 2010 · Report post Ну самое простое это посмотреть в сторону xinetd, туда свой скрипт приляпать и на нужный порт повесить. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
keshalg Posted October 26, 2010 · Report post у ребят с local.com.ua в последних сборках старгейзера (фриишный биллинг) есть спец.демон для исполнения скриптов на удаленных серверах. Сам пока не ковырял, вполне устраивает исполнение их по ssh с авторизацией по ключу. Правда а зачем что-то выдумывать? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
xeb Posted October 26, 2010 · Report post более изящное типа какого-нибудь xml-request(чтобы не придумывать свой протокол как передавать массив данных и получать массив в ответ)python'ий pickle ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Alteron Posted October 26, 2010 · Report post http://subnets.ru/blog/?p=34 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
terrible Posted October 27, 2010 · Report post я буду это на апаче делать полюбобу. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
mschedrin Posted October 27, 2010 · Report post Я так понимаю, что вопрос стоит в том чтобы не программировать ничего нового, а воспользоваться готовым софтом, если такой есть. Все предложенные методы завязаны на программирование. Так можно и свой rpc написать. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vitalyb Posted October 27, 2010 · Report post http://www.ibm.com/developerworks/library/ws-pyth10.html Сервер: #!python import SimpleXMLRPCServer class Server: def ping(self, msg): return "pong: %s" % (str(msg),) srv_object = Server() server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8888)) server.register_instance(srv_object) print "Listening on port 8888" server.serve_forever() Клиент: #!python import xmlrpclib server = xmlrpclib.ServerProxy("http://localhost:8888/") print server.ping(["hello world"]) Получится: $ python srv.py Listening on port 8888 localhost - - [27/Oct/2010 11:16:09] "POST / HTTP/1.0" 200 - $ python cli.py pong: ['hello world'] Если надо шифрование, логины, пароли, списки доступа, многопоточность, то прийдется немного дописать. Например многопоточность. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
EvilShadow Posted October 27, 2010 · Report post А всё-таки, чем длинные скрипты с дополнительными библиотеками красивее и изящнее решения в лоб - ssh? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
deep_admin Posted October 27, 2010 · Report post что-то вроде такого? !/usr/bin/expect -f set HOST "192.168.1.1" set PASS "mypassword" set USER "root" set ENC "KOI8-R" set CMD "ip route ls" set timeout -1 spawn luit -encoding $ENC ssh -l $USER $HOST match_max 100000 expect -exact "$USER@$HOST's password: " send -- "$PASS\r" expect "Last login: *\r\r *$USER*" send -- "$CMD\r" expect "\r" expect "*default*" exit Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted October 27, 2010 · Report post deep_admin Так я умею, но выглядет это как костыль, в принципе (x)inet.d интересный вариант, надо будет попробовать. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
deep_admin Posted October 27, 2010 · Report post deep_admin Так я умею, но выглядет это как костыль, в принципе (x)inet.d интересный вариант, надо будет попробовать. в случае с xinetd вам нужен свой серверный скрипт писать кроме клиентского, а это потребует установки разного, может и ненужного доп. софта в случае с ssh - ничего вообще не надо. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
GloooM Posted October 28, 2010 (edited) · Report post в случае с xinetd вам нужен свой серверный скрипт писать кроме клиентского Ну по идее же можно просто целевой скрипт чуть подправить (если вообще необходимо) и скормить его в xinetd, и ненужно писать скрипт для запуска другого скрипта. Edited October 28, 2010 by GloooM Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...