Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 19, 2011 12:12:08

|R|U|D|E|N|
От:
Зарегистрирован: 2010-09-24
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Клиент серверное приложение. Нжен совет по организации взаимодействия.

Добрый день.

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

Клиент-серверное приложение. Сервер оформлен в виде демона и работает исключительно на Linux.
Клиент на PyQT и работает только на виндовс. Взаимодействие реализованно через вызов серверных функций доступных через XML.RPC

Клиентская консоль предстовляет из себя что то вроде диспетчера задач(упр. процессами, просмотр нагрузки, и информация о ситеме).

Напрмер:
Нажимаем посмотреть список процессов. Консоль вызывает соответствующую функцию на сервере.
Сервер у себя выполняет стандартную команду линух ps aux и весь результат в виде строки возвращает клиенту.
Клиент эту строку парсит и заполняет данными соответствующую табличку в консоле.

Все это работает. Но текстовый обмен и сложный парсинг вывода каждой команды кажется мне слишком сложным и требующим кучи проверок на каждой Линукс ситеме т.к. в некоторых версиях вывод стандартных команд оболочки отличается.

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



Офлайн

#2 Дек. 19, 2011 15:51:12

ks
От:
Зарегистрирован: 2009-05-20
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Клиент серверное приложение. Нжен совет по организации взаимодействия.

Без исходников(мне) сложно что-то советовать. Не вижу как реализовано у вас - не представляю, чего можно улучшить…



Отредактировано (Дек. 19, 2011 15:52:10)

Офлайн

#3 Дек. 19, 2011 16:39:30

|R|U|D|E|N|
От:
Зарегистрирован: 2010-09-24
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Клиент серверное приложение. Нжен совет по организации взаимодействия.

Суть в том, что используются собственные команды оболочки linux(ps, df, chkconfig) вывод которых перехватывается модулем subprocess и в орегинальном виде(в виде обычных строк) передается клиенту

Вот пример серверной функции получающей список всех установленных в ситеме служб(демонов):

def LIST_SERVICE():
if sys.platform == ‘linux2’:
command = ‘/sbin/chkconfig –list’;
p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE);
out = p.stdout.read().decode('utf-8');
return out;

вот результат получаемый клиентов:
aaeventd 0:off 1:off 2:off 3:off 4:off 5:off 6:off\n
acpid 0:off 1:off 2:on 3:on 4:off 5:on 6:off\n
after.local 0:off 1:off 2:off 3:off 4:off 5:off 6:off\n
….


На киенте каждая строка переберается и в нужном виде добовляется в таблицу или текстовое поле графического интерфейса.


Меня волнует в принципе это вообще нормально, что обмен идет на уровне текстовых строк или подобное реализууется как то по другому?



Офлайн

#4 Дек. 19, 2011 16:41:33

|R|U|D|E|N|
От:
Зарегистрирован: 2010-09-24
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Клиент серверное приложение. Нжен совет по организации взаимодействия.

Может у питона есть свои какие то функции работы с такими компонентами системы как процессы, службы и нет необходимости использовать команды оболочки Linux



Офлайн

#5 Дек. 19, 2011 18:25:06

ks
От:
Зарегистрирован: 2009-05-20
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Клиент серверное приложение. Нжен совет по организации взаимодействия.

Для win'ды есть win32api либа(вроде из части этой win32api можно доставать как раз эти данные по процессам).
Но похоже, что для линукса все привыкли к именно таким решениям как у вас.
http://stackoverflow.com/questions/1091327/processlist
http://www.ibm.com/developerworks/aix/library/au-python/
И для пущей убедительности можно поглядеть книжку http://mirknig.com/ -> Python for Unix and Linux System Administration



Офлайн

#6 Дек. 20, 2011 19:30:34

Обедающий философ
От:
Зарегистрирован: 2011-05-06
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Клиент серверное приложение. Нжен совет по организации взаимодействия.

Извиняюсь, конечно, но чем ssh не устраивает?



Офлайн

#7 Дек. 21, 2011 16:30:58

ks
От:
Зарегистрирован: 2009-05-20
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Клиент серверное приложение. Нжен совет по организации взаимодействия.

Обедающий философ
Извиняюсь, конечно, но чем ssh не устраивает?
А что такое ssh ? :)



Офлайн

#8 Дек. 21, 2011 16:37:40

|R|U|D|E|N|
От:
Зарегистрирован: 2010-09-24
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

Клиент серверное приложение. Нжен совет по организации взаимодействия.

Спасибо ks! Я так и думал что для Linux нечего типа win32api нет и вы это наглядно утвердили.
Жаль конечно…



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version