Сканирование определенной подсети
This commit is contained in:
parent
be8b724d61
commit
e23e608cac
2 changed files with 16 additions and 9 deletions
|
|
@ -1,6 +1,5 @@
|
||||||
from fastapi import APIRouter, HTTPException
|
from fastapi import APIRouter, HTTPException, Body
|
||||||
from typing import List, Dict
|
from models.subnet import SubnetScanResult, SubnetScanRequest
|
||||||
from models.subnet import SubnetScanResult
|
|
||||||
from models.wifi import WifiScanResult
|
from models.wifi import WifiScanResult
|
||||||
from models.request import NoteRequest, WifiConnectRequest, WifiDisconnectRequest
|
from models.request import NoteRequest, WifiConnectRequest, WifiDisconnectRequest
|
||||||
from services.subnet_service import SubnetService
|
from services.subnet_service import SubnetService
|
||||||
|
|
@ -10,17 +9,16 @@ from services.connect_service import WifiConnectionService
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
@router.get("/devices", response_model=SubnetScanResult)
|
@router.get("/devices", response_model=SubnetScanResult)
|
||||||
def scan_subnet(subnet: str = "192.168.1.0/24", ports: List[int] = None):
|
def scan_subnet(request: SubnetScanRequest = Body(...)):
|
||||||
"""Сканирует локальную подсеть и возвращает данные об устройствах.
|
"""Сканирует локальную подсеть и возвращает данные об устройствах.
|
||||||
|
|
||||||
Выполняет сканирование указанной подсети для обнаружения активных устройств
|
Выполняет сканирование указанной подсети для обнаружения активных устройств
|
||||||
с возможностью проверки указанных портов.
|
с возможностью проверки указанных портов.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
subnet (str, optional): Адрес подсети в формате CIDR (например, "192.168.1.0/24").
|
request (SubnetScanResult): Параметры для сканирования подсети.
|
||||||
По умолчанию "192.168.1.0/24".
|
- subnet (str, optional): Подсеть для сканирования (например "192.168.1.0/24").
|
||||||
ports (List[int], optional): Список портов для сканирования. По умолчанию None.
|
По умолчанию, если subnet пуст, то сканируется подсеть "192.168.1.0/24".
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
SubnetScanResult: Объект с результатами сканирования (устройства и их данные).
|
SubnetScanResult: Объект с результатами сканирования (устройства и их данные).
|
||||||
|
|
||||||
|
|
@ -29,7 +27,7 @@ def scan_subnet(subnet: str = "192.168.1.0/24", ports: List[int] = None):
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
subnet_service = SubnetService()
|
subnet_service = SubnetService()
|
||||||
result = subnet_service.scan_subnet(subnet, ports)
|
result = subnet_service.scan_subnet(request.subnet)
|
||||||
return result
|
return result
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise HTTPException(status_code=500, detail=f"Ошибка сканирования: {str(e)}")
|
raise HTTPException(status_code=500, detail=f"Ошибка сканирования: {str(e)}")
|
||||||
|
|
|
||||||
|
|
@ -36,3 +36,12 @@ class SubnetScanResult(BaseModel):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
devices: List[Device] = []
|
devices: List[Device] = []
|
||||||
|
|
||||||
|
class SubnetScanRequest(BaseModel):
|
||||||
|
"""
|
||||||
|
Параметры для сканирования подсети
|
||||||
|
|
||||||
|
Атрибуты:
|
||||||
|
subnet (str): Подсеть для сканирования (например 192.168.1.0/24)
|
||||||
|
"""
|
||||||
|
subnet: Optional[str] = "192.168.1.0/24"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue