47 lines
No EOL
1.8 KiB
Python
47 lines
No EOL
1.8 KiB
Python
from pydantic import BaseModel
|
||
from typing import Optional, List
|
||
|
||
class Device(BaseModel):
|
||
"""
|
||
Сканируемое устройство в подсети
|
||
|
||
Атрибуты:
|
||
ip (str): IP-адрес устройства
|
||
mac (Optional[str]): MAC-адрес устройства
|
||
hostname (Optional[str]): Имя хоста
|
||
vendor (Optional[str]): Название производителя устройства (По MAC-адресу)
|
||
open_ports (List[str]): Открытые порты устройства
|
||
status (str): Статус устройства (онлайн/оффлайн)
|
||
last_seen (Optional[str]): Последняя активность устройства
|
||
note (Optional[str]): Заметка устройства
|
||
"""
|
||
|
||
ip: str
|
||
mac: Optional[str] = None
|
||
hostname: Optional[str] = None
|
||
vendor: Optional[str] = None
|
||
open_ports: List[str] = []
|
||
status: str
|
||
last_seen: Optional[str] = None
|
||
note: Optional[str] = None
|
||
|
||
class SubnetScanResult(BaseModel):
|
||
"""
|
||
Результат сканирования устройств в подсети
|
||
|
||
Атрибуты:
|
||
devices (List[Device]): Список просканированных устройств
|
||
error (Optional[str]): Сообщение об ошибке, если сканирование не удалось
|
||
"""
|
||
|
||
devices: List[Device] = []
|
||
error: Optional[str] = None
|
||
|
||
class SubnetScanRequest(BaseModel):
|
||
"""
|
||
Параметры для сканирования подсети
|
||
|
||
Атрибуты:
|
||
subnet (Optional[str]): Подсеть для сканирования (например 192.168.1.0/24), опционально
|
||
"""
|
||
subnet: Optional[str] = None |