Jump to content

Recommended Posts

Posted

Задача весьма простая, один сервер должен инициировать запуск скрипта с параметрами на другом сервером, получить от него ответ.

Понятно, что можно это сделать тупо по ssh, но хочется что-то более изящное типа какого-нибудь xml-request(чтобы не придумывать свой протокол как передавать массив данных и получать массив в ответ), но поднимать apache не очень хочется.

Может есть какой-то специальный протокол, созданный для того, чтобы с одного сервера дёргать скрипты на другом?

Posted

у ребят с local.com.ua в последних сборках старгейзера (фриишный биллинг) есть спец.демон для исполнения скриптов на удаленных серверах.

Сам пока не ковырял, вполне устраивает исполнение их по ssh с авторизацией по ключу.

Правда а зачем что-то выдумывать?

Posted
более изящное типа какого-нибудь xml-request(чтобы не придумывать свой протокол как передавать массив данных и получать массив в ответ)
python'ий pickle ?

 

Posted

Я так понимаю, что вопрос стоит в том чтобы не программировать ничего нового, а воспользоваться готовым софтом, если такой есть. Все предложенные методы завязаны на программирование. Так можно и свой rpc написать.

Posted

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']

 

Если надо шифрование, логины, пароли, списки доступа, многопоточность, то прийдется немного дописать. Например многопоточность.

Posted

что-то вроде такого?

 

!/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

Posted
deep_admin

Так я умею, но выглядет это как костыль, в принципе (x)inet.d интересный вариант, надо будет попробовать.

в случае с xinetd вам нужен свой серверный скрипт писать кроме клиентского, а это потребует установки разного, может и ненужного доп. софта

в случае с ssh - ничего вообще не надо.

Posted (edited)

в случае с xinetd вам нужен свой серверный скрипт писать кроме клиентского

Ну по идее же можно просто целевой скрипт чуть подправить (если вообще необходимо) и скормить его в xinetd, и ненужно писать скрипт для запуска другого скрипта.

Edited by GloooM

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.