SNMP Agent
The SNMP agent is configured using the devsettings.Snmp interface that can be found at the well-known URI /snmp
. The configuration is retrieved with getSettings and written with setSettings.
- Note
- The SNMPv3 agent uses a user-based security model. User passphrases and privilege levels are configured with the user management interface.
import raritan.rpc.devsettings
snmp_proxy = raritan.rpc.devsettings.Snmp("/snmp", agent)
cfg = snmp_proxy.getConfiguration()
cfg.v2enable = True
cfg.writeComm = "private"
cfg.sysName = "Rack 17A"
snmp_proxy.setConfiguration(cfg)
SNMP Notifications
Configuration SNMP traps and informs is not straight-forward because there is no dedicated interface for it. It is done by modifying pre-defined rules and actions of the event rules engine. See Event Rules and Actions for more details.
Notifications are enabled or disabled by setting the isEnabled flag in the rule with id SystemSnmpTrapRule
. Notification types and destinations are configured with the arguments vector of the SystemSnmpTrapAction
action. Action arguments are key-value pairs, with the following keys being supported:
- SnmpNotfType: Notification type. One of "v2Trap", "v2Inform", "v3Trap", "v3Inform"
- SnmpTrapDest1: Primary trap destination, format: "<host>:<port>:<community>"
- SnmpTrapDest2: Optional second destination (SNMPv2 only)
- SnmpTrapDest3: Optional third destination (SNMPv2 only)
- SnmpNotfTimeout: Timeout in seconds for SNMPv2/SNMPv3 informs
- SnmpNotfRetries: Number of retries for SNMPv2/SNMPv3 informs
- SnmpNotfV3SecName: SNMPv3 security/user name
- SnmpNotfV3SecLevel: SNMPv3 security level. One of: "noAuthNoPriv", "authNoPriv", "authPriv"
- SnmpNotfV3AuthProto: SNMPv3 authentication protocol. One of: "md5", "sha"
- SnmpNotfV3AuthKey: SNMPv3 authentication passphrase
- SnmpNotfV3PrivProto: SNMPv3 privacy protocol. One of: "des", "aes"
- SnmpNotfV3PrivKey: SNMPv3 privacy passphrase
import raritan.rpc.event
event_engine = raritan.rpc.event.Engine("/event_engine", agent)
event_engine.enableRule("SystemSnmpTrapRule")
for action in event_engine.listActions():
if action.id == 'SystemSnmpTrapAction':
action.arguments = [
raritan.rpc.event.KeyValue("SnmpNotfType", "v2Inform"),
raritan.rpc.event.KeyValue("SnmpTrapDest1", "192.168.0.42:162:private"),
raritan.rpc.event.KeyValue("SnmpNotfTimeout", "3"),
raritan.rpc.event.KeyValue("SnmpNotfRetries", "5")
]
event_engine.modifyAction(action)
Date and Time
System time is configured with the datetime.DateTime interface at /datetime
. The following settings can be configured:
- Set a device-local time or synchronize with NTP server
- For NTP: Use servers from DHCP (if enabled) or configure them manually
- Device time zone
import raritan.rpc.datetime
datetime_proxy = raritan.rpc.datetime.DateTime("/datetime", agent)
cfg = datetime_proxy.getCfg()
for zone in datetime_proxy.getZoneInfos(False):
if zone.name.find("Taipei") >= 0:
cfg.zoneCfg.id = zone.id
cfg.zoneCfg.enableAutoDST = zone.hasDSTInfo
cfg.protocol = raritan.rpc.datetime.DateTime.Protocol.NTP
cfg.ntpCfg.forceStatic = True
cfg.ntpCfg.server1 = "0.pool.ntp.org"
datetime_proxy.setCfg(cfg)
SMTP Server
The SMTP server for mail notifications is configured using the devsettings.Smtp interface at /smtp
.
import raritan.rpc.devsettings
cfg = raritan.rpc.devsettings.Smtp.Configuration(
host = "mail.company.example",
port = 25,
useTls = False,
allowOffTimeRangeCerts = False,
caCertChain = "",
sender = "pdu-notification@company.example",
useAuth = False,
username = "",
password = "",
retryCount = 5,
retryInterval = 3
)
smtp_proxy = raritan.rpc.devsettings.Smtp("/smtp", agent)
smtp_proxy.setConfiguration(cfg)