RGPD / code_test.py
jmainformatique's picture
Upload folder using huggingface_hub
87f6db4 verified
from snmp import CommunityData, ContextData, SNMPv1, SNMPv2c, SNMPv3
from snmp import Version
from ipaddress import IPv4Network
import socket
def get_printers(community="public", ip_range="192.168.251.0/24", version=Version.V1):
oids = {
"printer_name": "1.3.6.1.2.1.25.3.2.1.3",
"printer_status": "1.3.6.1.2.1.25.3.5.1.1",
"printer_location": "1.3.6.1.2.1.1.6"
}
printers = []
for ip in IPv4Network(ip_range):
ip_str = str(ip)
if ip_str == "192.168.251.249":
continue
try:
if version == Version.V1:
snmp_client = SNMPv1(CommunityData(community))
elif version == Version.V2c:
snmp_client = SNMPv2c(CommunityData(community))
else: # Version 3
snmp_client = SNMPv3(ContextData())
printer_info = {}
for key, oid in oids.items():
try:
result = snmp_client.get(oid, ip_str)
printer_info[key] = result.value
except socket.timeout:
#print(f"Timeout for {ip_str}")
break
except Exception as e:
#print(f"Error querying {ip_str}: {e}")
break
if printer_info:
printer_info["ip"] = ip_str
printers.append(printer_info)
except Exception as e:
# print(f"SNMP error for {ip_str}: {e}") # Handle SNMP errors
pass
return printers
if __name__ == "__main__":
printers = get_printers()
if printers:
for printer in printers:
print(printer)
else:
print("No printers found.")