или
Заказать новую работу(фрагменты работы)
Учебное заведение: | Другие города > ДРУГОЕ |
Тип работы: | Курсовые работы |
Категория: | Информационные технологии, Программирование |
Год сдачи: | 2012 |
Количество страниц: | 39 |
Оценка: | 5 |
Дата публикации: | 15.05.2017 |
Количество просмотров: | 533 |
Рейтинг работы: |
Создано клиент-серверное приложение на языке высокого уровня Python для периодического сбора системной информации об удаленных компьютерах(инвентаризации и учета) в сети. Приложение получает и обрабатывает следующую информацию:
-Тип, частота, загрузка процессора;
-Тип и обьем памяти;
-Данные о винчестерах;
-Данные о графическом процессоре(GPU);
-Системная информация;
-Информация о пользователях;
-Время работы компьютеров;
-Информация о сети (статистика, адреса, таблица маршрутизации, активные соединения и т. д.);
-Списки запущенных процессов;
-Списки установленных программ;
Клиент устанавливает соединение с сервером и передает данные. Сервер принимает данные от клиентов в асинхронных потоках, упорядочивает и сохраняет полученную информацию в базу данных. Генератор отчетов извлекает данные из базы данных и формирует html-отчет.
Работа включает в себя полноценный отчет, программу + весь исходный код с подробными комментариями. Система тестировалась Ubuntu.
(фрагменты работы)
Аннотация.
Данная программа представляет собой сетевое приложение, состоящее из клиента и сервера. Программа предназначена для инвентаризации: сбора системной информации о наборе компьютеров с последующим ее отображением в удобном для пользователя виде. Обе части программы: и клиентская, и серверная, реализованы на Python, высокоуровневом языке программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Использованная в работе версия - 2.7.3.
Сетевой обмен между клиентом и сервером реализован с помощью сокетов. Сокеты используют транспортный уровень согласно семиуровневой модели OSI (Open Systems Interconnection, взаимодействие открытых систем), то есть относятся к более низкому уровню, чем большинство используемых протоколов. Однако, несомненным преимуществом сокетов является простота их использования для несложных задач.
Сторона клиента.
Клиент предаставляет из себя unix-демон, т.е. программу, работающую в фоновом режиме, не имеющую пользовательского интерфейса и выполняющую рутинную работу. Основная функциональность unix-демона реализована в классе Daemon модуля client/daemon.py. Работу демона можно разделить на три этапа: ответвление от родительского процесса, перенаправление ввода-вывода и контроль pid файла. Ответвление от родительского процесса происходит в два этапа и выполняется с помощью вызова метода fork() из стандартной библиотеки python под названием os. В качестве стандартных устройств ввода, вывода и ошибки (stdin, stdout и stderr) принудительно указывается пустое устройство /dev/null, что сделано для того, чтобы исключить взаимодействие демона с пользователем. Демон должен быть запущен в единственном экземпляре на каждом компьютере; с целью обеспечения данной функциональности происходит запись файла с PID (process identifier) самого демона во временную директорию /tmp. Каждый раз при запуске демон проверяет, существует ли там данный файл, и если он есть, то запуск принудительно отменяется.
В модуле client/main_client.py реализован класс derivedDaemon, наследующий класс Daemon. В этом классе переопределен метод run(), что позволяет сохранить логику работы, описанную выше, и добавить необходимую функциональность. В переопределенном методе run() происходит попытка установки соединения с сервером, и, если последнее оказалось успешным, начинается обмен данными. Обмен данными с сервером происходит в два этапа: сначала однократно происходит сбор и отправка не изменяющейся со временем системной информации о компьютере, затем запускается цикл, в котором с заданным в коде скрипта интервалом происходит отправка динамически меняющихся данных.
Кроме того, методы, собирающие системную информацию, также реализованы в классу derivedDaemon. В общем случае, каждый такой метод вызывает консольную команду, а затем преобразует ее вывод в более удобный для обработки и возвращает либо строку с заданными параметрами, либо словарь строк. Для отправки на сервер, данные формируются в виде словаря, а затем с помощью стандартной библиотеки pickle упаковываются в бинарную строку.
Модуль /client/main_client.py является запускаемым, причем при запуске обязателен один из параметров: start, stop или restart, отвечающие соответственно за запуск, остановку и перезапуск демона.
Сторона сервера.
Основным модулем, отвечающим за работу сервера, является server/main_server.py. Сервер при запуске открывает сокет и начинает ожидание подключений. При входящем подключении для каждого соединения начинает работать отдельный поток, в котором принимаются данные. Данные принимаются в виде бинарной строки, распаковываются в словарь, и записываются в базу данных. Для этих действий, соответственно, используются встроенные библиотеки языка pickle и shelve. Ключевым полем для записи в БД, является идентификатор компьютера, для упрощения являющийся также MAC-адресом. Кроме того, в модуле server/main_server.py происходит вызов генератора отчета в отдельном потоке с определенным в коде скрипта интервалом.
Генератор отчета, основной код которого представлен в файле server/generate_report.py, открывает файл с базой данных, и на основании записей в БД генерирующий html-страницу, на которой представлен набор таблиц с системной информацией о компьютерах, на которых запущен клиент. Для получения актуальной информации достаточно просто обновить страницу в браузере.
Похожие работы
Работы автора