Merge pull request #138 from simon04/network_traffic_down
network_traffic: allow to hide down interfaces
This commit is contained in:
commit
6691e7d6fc
@ -21,12 +21,16 @@ class NetworkTraffic(IntervalModule):
|
||||
interval = 1
|
||||
settings = (
|
||||
("format", "format string"),
|
||||
("format_down", "format string if the interface is down (unless hide_down is set)"),
|
||||
("hide_down", "whether to not display a interface which is down"),
|
||||
("interface", "network interface"),
|
||||
("divisor", "divide all byte values by this value"),
|
||||
("round_size", "defines number of digits in round"),
|
||||
)
|
||||
|
||||
format = "{interface} \u2197{bytes_sent}kB/s \u2198{bytes_recv}kB/s"
|
||||
format_down = "{interface} \u2013"
|
||||
hide_down = False
|
||||
interface = "eth0"
|
||||
divisor = 1024
|
||||
round_size = None
|
||||
@ -36,7 +40,8 @@ class NetworkTraffic(IntervalModule):
|
||||
|
||||
def update_counters(self):
|
||||
self.pnic_before = self.pnic
|
||||
self.pnic = psutil.net_io_counters(pernic=True)[self.interface]
|
||||
counters = psutil.net_io_counters(pernic=True)
|
||||
self.pnic = counters[self.interface] if self.interface in counters else None
|
||||
|
||||
def get_bytes_sent(self):
|
||||
return (self.pnic.bytes_sent - self.pnic_before.bytes_sent) / self.divisor
|
||||
@ -50,19 +55,40 @@ class NetworkTraffic(IntervalModule):
|
||||
def get_packets_received(self):
|
||||
return self.pnic.packets_recv - self.pnic_before.packets_recv
|
||||
|
||||
def sysfs_interface_up(self):
|
||||
try:
|
||||
sysfs = "/sys/class/net/{}/operstate".format(self.interface)
|
||||
with open(sysfs) as operstate:
|
||||
status = operstate.read().strip()
|
||||
return status == "up" or status == "unknown"
|
||||
except FileNotFoundError:
|
||||
return False
|
||||
|
||||
def run(self):
|
||||
self.update_counters()
|
||||
if not self.pnic_before:
|
||||
if self.sysfs_interface_up():
|
||||
if not self.pnic_before:
|
||||
return
|
||||
cdict = {
|
||||
"bytes_sent": self.get_bytes_sent(),
|
||||
"bytes_recv": self.get_bytes_received(),
|
||||
"packets_sent": self.get_packets_sent(),
|
||||
"packets_recv": self.get_packets_received(),
|
||||
}
|
||||
round_dict(cdict, self.round_size)
|
||||
cdict["interface"] = self.interface
|
||||
self.output = {
|
||||
"full_text": self.format.format(**cdict),
|
||||
"instance": self.interface,
|
||||
}
|
||||
elif self.hide_down:
|
||||
self.output = None
|
||||
return
|
||||
cdict = {
|
||||
"bytes_sent": self.get_bytes_sent(),
|
||||
"bytes_recv": self.get_bytes_received(),
|
||||
"packets_sent": self.get_packets_sent(),
|
||||
"packets_recv": self.get_packets_received(),
|
||||
}
|
||||
round_dict(cdict, self.round_size)
|
||||
cdict["interface"] = self.interface
|
||||
self.output = {
|
||||
"full_text": self.format.format(**cdict),
|
||||
"instance": self.interface,
|
||||
}
|
||||
else:
|
||||
cdict = {
|
||||
"interface": self.interface,
|
||||
}
|
||||
self.output = {
|
||||
"full_text": self.format_down.format(**cdict),
|
||||
"instance": self.interface,
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user