или
Заказать новую работу(фрагменты работы)
Учебное заведение: | Другие города > ДРУГОЕ |
Тип работы: | Курсовые работы |
Категория: | Информационные технологии, Программирование |
Год сдачи: | 2012 |
Количество страниц: | 39 |
Оценка: | 5 |
Дата публикации: | 15.05.2017 |
Количество просмотров: | 478 |
Рейтинг работы: |
Создано клиент-серверное приложение на
языке высокого уровня Python для периодического сбора системной информации об
удаленных компьютерах (инвентаризации и учета) в сети. Приложение получает и обрабатывает следующую информацию:
-Тип, частота, загрузка процессора;
-Тип и объем памяти;
-Данные о винчестерах;
-Данные о графическом процессоре(GPU);
-Системная информация;
-Информация о пользователях;
-Время работы компьютеров;
-Информация о сети (статистика, адреса, таблица
маршрутизации, активные соединения и т. д.);
-Списки запущенных процессов;
-Списки установленных программ;
Клиент устанавливает соединение с сервером и
передает данные. Сервер принимает данные от клиентов в асинхронных потоках,
упорядочивает и сохраняет полученную информацию в базу данных. Генератор
отчетов извлекает данные из базы данных и формирует html-отчет.
(фрагменты работы)
Аннотация.
Данная
программа представляет собой сетевое приложение, состоящее из клиента и сервера. Программа предназначена для
инвентаризации: сбора системной информации о наборе компьютеров с последующим
ее отображением в удобном для пользователя виде. Обе части программы: и
клиентская, и серверная, реализованы на 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-страницу, на которой представлен набор таблиц с системной информацией о
компьютерах, на которых запущен клиент. Для получения актуальной информации
достаточно просто обновить страницу в браузере.
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
1. Введение в
администрирование
UNIX [Электронный ресурс]:
Командная строка UNIX. - 2012 - Режим доступа:
http://ru.wikibooks.org
2.
Команды
Linux
[Электронный ресурс]:
расширенный cправочник
команд Unix. - 1998 - Режим доступа: http://putty.org.ru/articles/unix-linux-ref.html
3. Гифт Н., Джонс Д. Python в системном администрировании UNIX и
Linux – Пер. с англ. – СПб.: Символ Плюс, 2009. – 512 с.
4. Инструменты мониторинга и
анализа сети [Электронный
ресурс]: Классификация средств мониторинга и
анализа. - 1998
- Режим
доступа:
http://citforum.ru/nets/optimize/locnop_07.shtml
Похожие работы
Работы автора