s.lobanov Posted October 26, 2010 Posted October 26, 2010 Задача весьма простая, один сервер должен инициировать запуск скрипта с параметрами на другом сервером, получить от него ответ. Понятно, что можно это сделать тупо по ssh, но хочется что-то более изящное типа какого-нибудь xml-request(чтобы не придумывать свой протокол как передавать массив данных и получать массив в ответ), но поднимать apache не очень хочется. Может есть какой-то специальный протокол, созданный для того, чтобы с одного сервера дёргать скрипты на другом? Вставить ник Quote
sdy_moscow Posted October 26, 2010 Posted October 26, 2010 Вы как блондинка прямо... "Хочу родить ребенка, но не хочу быть беременной..." Определитесь. Вставить ник Quote
GloooM Posted October 26, 2010 Posted October 26, 2010 Ну самое простое это посмотреть в сторону xinetd, туда свой скрипт приляпать и на нужный порт повесить. Вставить ник Quote
keshalg Posted October 26, 2010 Posted October 26, 2010 у ребят с local.com.ua в последних сборках старгейзера (фриишный биллинг) есть спец.демон для исполнения скриптов на удаленных серверах. Сам пока не ковырял, вполне устраивает исполнение их по ssh с авторизацией по ключу. Правда а зачем что-то выдумывать? Вставить ник Quote
xeb Posted October 26, 2010 Posted October 26, 2010 более изящное типа какого-нибудь xml-request(чтобы не придумывать свой протокол как передавать массив данных и получать массив в ответ)python'ий pickle ? Вставить ник Quote
Alteron Posted October 26, 2010 Posted October 26, 2010 http://subnets.ru/blog/?p=34 Вставить ник Quote
terrible Posted October 27, 2010 Posted October 27, 2010 я буду это на апаче делать полюбобу. Вставить ник Quote
mschedrin Posted October 27, 2010 Posted October 27, 2010 Я так понимаю, что вопрос стоит в том чтобы не программировать ничего нового, а воспользоваться готовым софтом, если такой есть. Все предложенные методы завязаны на программирование. Так можно и свой rpc написать. Вставить ник Quote
vitalyb Posted October 27, 2010 Posted October 27, 2010 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
EvilShadow Posted October 27, 2010 Posted October 27, 2010 А всё-таки, чем длинные скрипты с дополнительными библиотеками красивее и изящнее решения в лоб - ssh? Вставить ник Quote
deep_admin Posted October 27, 2010 Posted October 27, 2010 что-то вроде такого? !/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
s.lobanov Posted October 27, 2010 Author Posted October 27, 2010 deep_admin Так я умею, но выглядет это как костыль, в принципе (x)inet.d интересный вариант, надо будет попробовать. Вставить ник Quote
deep_admin Posted October 27, 2010 Posted October 27, 2010 deep_admin Так я умею, но выглядет это как костыль, в принципе (x)inet.d интересный вариант, надо будет попробовать. в случае с xinetd вам нужен свой серверный скрипт писать кроме клиентского, а это потребует установки разного, может и ненужного доп. софта в случае с ssh - ничего вообще не надо. Вставить ник Quote
GloooM Posted October 28, 2010 Posted October 28, 2010 (edited) в случае с xinetd вам нужен свой серверный скрипт писать кроме клиентского Ну по идее же можно просто целевой скрипт чуть подправить (если вообще необходимо) и скормить его в xinetd, и ненужно писать скрипт для запуска другого скрипта. Edited October 28, 2010 by GloooM Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.