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]}") | ||||
		Reference in New Issue
	
	Block a user