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(
"snmpget -v1 -c private -O qn {} {}".format(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(
"snmpset -v1 -c private {} {} {}".format(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, "{}.{}".format(OID, index), "int {}".format(value))
[docs]def power_get(host, port, index):
assert port is None
index = int(index)
assert 1 <= index <= 8
return _snmp_get(host, "{}.{}".format(OID, index))