Compare commits
7 Commits
16c13756f8
...
7818cb8346
Author | SHA1 | Date | |
---|---|---|---|
7818cb8346 | |||
a2d93dabf7 | |||
4d405fcb7f | |||
00d8503847 | |||
6966fa47aa | |||
bdc27fbca3 | |||
808ea56a63 |
54
mikrotik_
Executable file
54
mikrotik_
Executable file
@ -0,0 +1,54 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
def config(name, port_max, ports_label):
|
||||||
|
print("graph_category network")
|
||||||
|
print("graph_info Mikrotik network flow")
|
||||||
|
print(f"graph_title Network flow for {name}")
|
||||||
|
print("graph_order down up")
|
||||||
|
print("graph_args --base 1000")
|
||||||
|
print("graph_vlabel in (-) / out (+)")
|
||||||
|
for port in range(1, port_max + 1):
|
||||||
|
print(f"down{port}.label {ports_label[port - 1]}")
|
||||||
|
print(f"down{port}.type DERIVE")
|
||||||
|
print(f"down{port}.min 0")
|
||||||
|
print(f"down{port}.graph no")
|
||||||
|
print(f"down{port}.cdef down{port},8,*")
|
||||||
|
for port in range(1, port_max + 1):
|
||||||
|
print(f"up{port}.label {ports_label[port - 1]}")
|
||||||
|
print(f"up{port}.type DERIVE")
|
||||||
|
print(f"up{port}.min 0")
|
||||||
|
print(f"up{port}.negative down{port}")
|
||||||
|
print(f"up{port}.cdef up{port},8,*")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
from sys import argv
|
||||||
|
import subprocess
|
||||||
|
import re
|
||||||
|
ports_label = []
|
||||||
|
InOctets = []
|
||||||
|
OutOctets = []
|
||||||
|
port_max = 0
|
||||||
|
host = argv[0].split("_")[1]
|
||||||
|
command = f"snmpwalk -v 2c -c public {host}"
|
||||||
|
result = subprocess.getoutput(command)
|
||||||
|
for line in result.splitlines():
|
||||||
|
if "sysName" in line:
|
||||||
|
name = line.split()[-1]
|
||||||
|
name = re.sub(r"(^[^A-Za-z_]|[^A-Za-z0-9_])", "_", name)
|
||||||
|
if "ifDescr" in line:
|
||||||
|
label = (line.split()[-1])
|
||||||
|
label = re.sub(r"(^[^A-Za-z_]|[^A-Za-z0-9_])", "_", label)
|
||||||
|
ports_label.append(label)
|
||||||
|
if "ifIndex" in line:
|
||||||
|
port_max += 1
|
||||||
|
if "ifInOctets" in line:
|
||||||
|
InOctets.append(int(line.split()[-1]))
|
||||||
|
if "ifOutOctets" in line:
|
||||||
|
OutOctets.append(int(line.split()[-1]))
|
||||||
|
if 1 < len(argv) <= 2 and argv[1] == "config":
|
||||||
|
config(name, port_max, ports_label)
|
||||||
|
else:
|
||||||
|
for port in range(1, port_max + 1):
|
||||||
|
print(f"down{port}.value {OutOctets[port - 1]}")
|
||||||
|
print(f"up{port}.value {InOctets[port - 1]}")
|
Loading…
Reference in New Issue
Block a user