host.py
2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'eduardo'
from netaddr import IPAddress
from sqlalchemy.schema import Column
from sqlalchemy.types import String, Integer
from . import Base
class Host(Base):
"""
Classe que define um ativo de rede
"""
__tablename__ = 'host'
network_ip = Column(String(16), primary_key=True, nullable=False)
mac_address = Column(String(18))
name = Column(String)
inclusion_date = Column(String(20))
scantime = Column(Integer)
ports = Column(String)
def __init__(self,
ip_address,
mac_address=None,
hostname=None,
inclusion_date=None,
scantime=None,
open_ports=None):
"""
Método construtor do ativo de rede
:param ip_address: Endereço Ip
:param mac_address: MAC
:param network: Endereço da rede onde o ativo foi encontrado
:param hostname: Nome do host
:param inclusion_date: Data de coleta
:param scantime: Tempo levado na execução
:param open_ports: Portas abertas
:return:
"""
self.ip_address = IPAddress(ip_address)
self.mac_address = mac_address
self.hostname = hostname
self.inclusion_date = inclusion_date
self.scantime = scantime
self.open_ports = open_ports
# Parâmetros do SQLAlchemy
self.network_ip = str(self.ip_address)
if self.open_ports is not None:
self.ports = ','.join(map(str, self.open_ports.keys()))
else:
self.ports = None
if self.hostname is not None:
if len(self.hostname.values()) > 0:
self.name = self.hostname.values()[0]
else:
self.name = None
else:
self.name = None
def __repr__(self):
"""
Metodo que passa a lista de parametros da classe
"""
return "<Host('%s, %s, %s, %s, %s, %s')>" % (
self.network_ip,
self.mac_address,
self.name,
self.inclusion_date,
self.scantime,
self.ports
)