Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные / ОС_лабораторная 1.docx
Скачиваний:
43
Добавлен:
12.02.2024
Размер:
2.71 Mб
Скачать
  1. Задание 2. Функции получения системной информации

Цели работы:

получение практических навыков по программированию в Linux

  1. Задание 2.1. Получение системной информации.

Разработать приложение, обеспечивающее получение следующей системной информации:

• Имя компьютера, имя пользователя;

• Версия операционной системы;

• Системные метрики (не менее 3х);

• Функции для работы со временем (не менее 2х);

• Дополнительные API-функции: 4 функции по выбору.

Ниже представлен код программы на языке Python.

'''Библиотеки/модули для получение системной информации'''

import os

import socket

import platform

import psutil

from datetime import datetime

import pytz

# Получаем имя компьютера

def get_computer_name():

computer_name, username = socket.gethostname(), os.getlogin()

return computer_name, username

# Получаем версию операционной системы

def get_os_version():

os_version = platform.system() + ' ' + platform.release()

return os_version

# Получаем системные метрики

def get_system_metrics():

mem = psutil.virtual_memory()

free_mem = mem.available

memory_usage = psutil.virtual_memory().percent

disk_usage = psutil.disk_usage('/').percent

return free_mem, memory_usage, disk_usage

# Функции для работы со временем

def get_time_functions():

current_datetime = datetime.now()

tz = pytz.timezone('Europe/Berlin')

berlin_current_datetime = datetime.now(tz)

return current_datetime, berlin_current_datetime

# Дополнительные API-функции

def additional_functions():

# Получение списка файлов в текущей директории

files = os.listdir('.')

# Проверка существования файла или директории

is_file_exists = os.path.exists('file.txt')

# Создание нового каталога

try:

os.makedirs('new_directory')

new_dir_successful = True

except FileExistsError:

new_dir_successful = False

# Информация о текущем процессе

current_process = psutil.Process(os.getpid())

process_cpu_usage = current_process.cpu_percent()

process_memory_usage = current_process.memory_info().rss

return files, is_file_exists, new_dir_successful, process_cpu_usage, process_memory_usage

# Вызов главной функции

def main():

while True:

print("Выберите опцию: ")

print("1. Имя компьютера, имя пользователя")

print("2. Версия операционной системы")

print("3. Системные метрики")

print("4. Функции для работы со временем")

print("5. Дополнительные API-функции")

option = int(input())

if option == 1:

computer_name, username = get_computer_name()

print(f"Имя компьютера: {computer_name}")

print(f"Имя пользователя: {username}")

elif option == 2:

os_version = get_os_version()

print(f"Версия операционной системы: {os_version}")

elif option == 3:

free_mem, memory_usage, disk_usage = get_system_metrics()

print(f"Количество свободной оперативной памяти: {free_mem:.2f} MB")

print(f"Использование памяти: {memory_usage}%")

print(f"Использование диска: {disk_usage}%")

elif option == 4:

current_datetime, berlin_current_datetime = get_time_functions()

print(current_datetime)

print(berlin_current_datetime)

elif option == 5:

files, is_file_exists, new_dir_successful, process_cpu_usage, process_memory_usage = additional_functions()

print(f"Список файлов в текущей директории: {files}")

print(f"Файл file.txt существует? {is_file_exists}")

if new_dir_successful:

print("Каталог 'new_directory' успешно создан")

else:

print("Директория 'new_directory' уже существует")

print(f"Использование CPU текущего процесса: {process_cpu_usage}%")

print(f"Использование памяти текущего процесса: {process_memory_usage} байт")

elif option == 0:

break

else:

print("Выбрана неверная опция")

if __name__ == '__main__':

main()

На рисунках 11-15 представлено работа программы, которая была описана выше.

Рисунок 11 – Вывод имени компьютера, имени пользователя

Рисунок 12 – Вывод версии операционной системы

Рисунок 13 – Вывод информации о системных метриках

Рисунок 14 – Вывод функций для работы со временем

Рисунок 15 – Вывод дополнительных API-функции

Вывод

Изучил информацию о составе дистрибутивов Linux. Приобрел практические навыки установки и запуска дистрибутива Linux в виртуальной машине Oracle VM VirtualBox, получения справочной информации о системе и установленных приложениях с помощью интерфейса командной строки. Получил практические навыки по программированию в Linux