from ..exception import ExecutionError
from ...util.helper import processwrapper
OID = ".1.3.6.1.4.1.318.1.1.4.4.2.1.3"
def _snmp_get(host, oid):
out = processwrapper.check_output(
f"snmpget -v1 -c private -O qn {host} {oid}".split()
).decode('ascii')
out_oid, value = out.strip().split(' ', 1)
assert oid == out_oid
if value == "1":
return True
if value == "2":
return False
raise ExecutionError("failed to get SNMP value")
def _snmp_set(host, oid, value):
try:
processwrapper.check_output(
f"snmpset -v1 -c private {host} {oid} {value}".split()
)
except Exception as e:
raise ExecutionError("failed to set SNMP value") from e
[docs]
def power_set(host, port, index, value):
assert port is None
index = int(index)
value = 1 if value else 2
assert 1 <= index <= 8
_snmp_set(host, f"{OID}.{index}", f"int {value}")
[docs]
def power_get(host, port, index):
assert port is None
index = int(index)
assert 1 <= index <= 8
return _snmp_get(host, f"{OID}.{index}")