FastNetMon

Showing posts with label RPyC. Show all posts
Showing posts with label RPyC. Show all posts

Sunday, 26 July 2009

RPyC

Хм... конечно. не мануал, но показать "как это работает" хочется-прехочется. Имеем два узла с запущенным classic_server.py: локальный и удаленный, вот так легко выполнять на них команды:

python2.5
Python 2.5.4 (r254:67916, Apr 4 2009, 17:55:16)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import rpyc
>>> local = rpyc.classic.connect('localhost')
>>> local.modules.os.uname()
('Linux', 'nrg-desktop', '2.6.24-22-generic', '#1 SMP Mon Nov 24 18:32:42 UTC 2008', 'i686')
>>> remote = rpyc.classic.connect('ultrasam.ru')
>>> remote.modules.os.uname()
('Linux', 'panel.nrg.name', '2.6.18-6-xen-686', '#1 SMP Sun Feb 10 22:43:13 UTC 2008', 'i686')


Исполнение кода на удаленной машине:

>>> hello_txt = """
... import os
... print "Hello from", os.getcwd()
... """
>>> import os
>>> exec hello_txt
Hello from /home/nrg/rpyc-3.0.6
>>> remote.execute(hello_txt)


И на удаленной машинке выплыло:
Hello from /usr


А вот это меня убило, заживо :)

>>> remote.execute('import urllib')
>>> remote.execute('print urllib.urlopen("http://ya.ru").read()')
>>> local.execute('import urllib')
>>> local.execute('print urllib.urlopen("http://ya.ru").read()')


Потрясающе, у меня нету слов, честно! :)

Установка RPyC

Python

Смотрим версию Питона:
python -V
Python 2.4.4


Если она 2.4, то сносим 2.4й sudo apt-get remove python2.4 (разумеется, если у вас никакого софта от него не зависит) и ставим 2.5й: sudo apt-get install python2.5 python2.5-dev (для Дебияна)

RPyC

Стягиваем файл: rpyc-3.0.6.tar.gz с http://sourceforge.net/projects/rpyc/files/
wget http://downloads.sourceforge.net/project/rpyc/main/3.0.6/rpyc-3.0.6.tar.gz?use_mirror=sunet
tar -xf rpyc-3.0.6.tar.gz
cd rpyc-3.0.6
sudo python2.5 setup.py install (или просто python, если в это время 2.4 версия будет удалена)



Где почитать?
http://www.ibm.com/developerworks/ru/library/l-rpyc/index.html?ca=drs-ru-0707
http://rpyc.wikidot.com/