Пример #1
0
    def __init__(self, *args, **kwargs):
        NetModule.__init__(self,
                           updatetime=1,
                           savecode=('m', 30),
                           protocol='packet_loss',
                           *args,
                           **kwargs)

        # packets stats
        self.sniff = GetSniffer()

        state = self.sysState()
        # init
        self.oldValues = state
        self.oldTotstats = state
    def __init__(self, *args, **kwargs):
        NetModule.__init__(self, updatetime=1, savecode=('m', 30), protocol='packet_loss', *args, **kwargs)

        # packets stats
        self.sniff = GetSniffer()

        state = self.sysState()
        # init
        self.oldValues = state
        self.oldTotstats = state
class NetModChild(NetModule):
    """
    Packets statistics - only works with the sniffer system
    """

    def __init__(self, *args, **kwargs):
        NetModule.__init__(self, updatetime=1, savecode=('m', 30), protocol='packet_loss', *args, **kwargs)

        # packets stats
        self.sniff = GetSniffer()

        state = self.sysState()
        # init
        self.oldValues = state
        self.oldTotstats = state

    def update(self):
        # System state update
        new = self.sysState()
        state = self.diffState(self.oldValues, new)
        self.oldValues = new

        # send data
        return state

    def pkt_handler(self, pkt):
        pass

    def database_init(self, db_class):
        req = \
"""
CREATE TABLE IF NOT EXISTS `packet_loss` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `packet_received` int(11) NOT NULL,
  `packet_handled` int(11) NOT NULL,
  `dtime_s` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;
"""
        db_class.execute(req)

    def database_save(self, db_class):
        req = "INSERT INTO packet_loss(date, packet_received, packet_handled, dtime_s) VALUES ("

        new = self.sysState()
        res = self.totState(self.oldTotstats, new)
        self.oldTotstats = new

        date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

        req += "\"" + date + "\"" + ","
        req += str(res["pkt_all"]) + ","
        req += str(res["pkt_handle"]) + ","
        req += str(res["dtime"])

        req += ")"
        db_class.execute(req)

    def sysState(self):
        """
        Get system stats
        """

        val = dict()

        val["time"] = time.time()

        res = self.sniff.get_stats()
        if res is not None:
            val["pkt_all"], val["pkt_drop"], val["pkt_devdrop"] = res
        else:
            val["pkt_all"], val["pkt_drop"], val["pkt_devdrop"] = (0, 0, 0)

        return val

    def diffState(self, old, new):
        """
        System stats on diff time
        """
        val = dict()

        diff = new["time"] - old["time"]
        if diff <= 0:
            diff = 1

        val["packet_received"] = new["pkt_all"] - old["pkt_all"]
        val["packet_dropped"] = new["pkt_drop"] - old["pkt_drop"]
        val["packet_devdrop"] = new["pkt_devdrop"] - old["pkt_devdrop"]
        val["packet_handled"] = val["packet_received"] - val["packet_dropped"]

        return val

    def totState(self, old, new):
        """
        System stats total
        """
        val = dict()

        diff = new["time"] - old["time"]
        if diff <= 0:
            diff = 1

        # time in second.microsec
        # val["time"] = new["time"]
        val["dtime"] = diff

        val["pkt_all"] = new["pkt_all"] - old["pkt_all"]

        # packer handle in statistic
        val["pkt_handle"] = val["pkt_all"] - (new["pkt_drop"] - old["pkt_drop"])

        return val
Пример #4
0
class NetModChild(NetModule):
    """
    Packets statistics - only works with the sniffer system
    """
    def __init__(self, *args, **kwargs):
        NetModule.__init__(self,
                           updatetime=1,
                           savecode=('m', 30),
                           protocol='packet_loss',
                           *args,
                           **kwargs)

        # packets stats
        self.sniff = GetSniffer()

        state = self.sysState()
        # init
        self.oldValues = state
        self.oldTotstats = state

    def update(self):
        # System state update
        new = self.sysState()
        state = self.diffState(self.oldValues, new)
        self.oldValues = new

        # send data
        return state

    def pkt_handler(self, pkt):
        pass

    def database_init(self, db_class):
        req = \
"""
CREATE TABLE IF NOT EXISTS `packet_loss` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `packet_received` int(11) NOT NULL,
  `packet_handled` int(11) NOT NULL,
  `dtime_s` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;
"""
        db_class.execute(req)

    def database_save(self, db_class):
        req = "INSERT INTO packet_loss(date, packet_received, packet_handled, dtime_s) VALUES ("

        new = self.sysState()
        res = self.totState(self.oldTotstats, new)
        self.oldTotstats = new

        date = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

        req += "\"" + date + "\"" + ","
        req += str(res["pkt_all"]) + ","
        req += str(res["pkt_handle"]) + ","
        req += str(res["dtime"])

        req += ")"
        db_class.execute(req)

    def sysState(self):
        """
        Get system stats
        """

        val = dict()

        val["time"] = time.time()

        res = self.sniff.get_stats()
        if res is not None:
            val["pkt_all"], val["pkt_drop"], val["pkt_devdrop"] = res
        else:
            val["pkt_all"], val["pkt_drop"], val["pkt_devdrop"] = (0, 0, 0)

        return val

    def diffState(self, old, new):
        """
        System stats on diff time
        """
        val = dict()

        diff = new["time"] - old["time"]
        if diff <= 0:
            diff = 1

        val["packet_received"] = new["pkt_all"] - old["pkt_all"]
        val["packet_dropped"] = new["pkt_drop"] - old["pkt_drop"]
        val["packet_devdrop"] = new["pkt_devdrop"] - old["pkt_devdrop"]
        val["packet_handled"] = val["packet_received"] - val["packet_dropped"]

        return val

    def totState(self, old, new):
        """
        System stats total
        """
        val = dict()

        diff = new["time"] - old["time"]
        if diff <= 0:
            diff = 1

        # time in second.microsec
        # val["time"] = new["time"]
        val["dtime"] = diff

        val["pkt_all"] = new["pkt_all"] - old["pkt_all"]

        # packer handle in statistic
        val["pkt_handle"] = val["pkt_all"] - (new["pkt_drop"] -
                                              old["pkt_drop"])

        return val