async-snmp
v1.0.2
Published
A lightweight wrapper for the Node.js net-snmp library
Maintainers
Readme
async-snmp
A lightweight TypeScript wrapper around the Node.js net-snmp library that exposes Promise-friendly helpers and a small session manager.
Why this package
- Converts
net-snmp's callback APIs into Promise/async-friendly helpers. - Provides a session manager that reuses
net-snmpsessions per-IP and supports SNMPv3 credentials. - TypeScript-first with declaration output so consumers get types.
Install
This package expects net-snmp to be available at runtime. Install it as a peer or runtime dependency in your project:
npm install net-snmpQuick usage
The package uses a singelton snmpManager to manage sessions instead of closing them after each use. You can configure credentials for the snmp user in two ways:
- Environment variable:
SNMP_USER_CONFIG(JSON string) - Provide a per-session override when calling
getSession(ip, userConfig)
Example — programmatic default config:
SNMP_USER_CONFIG='{"name":"operator","level":3,"authProtocol":3,"authKey":"auth","privProtocol":2,"privKey":"priv"}'The JSON fields map to the SnmpUserConfig shape used by net-snmp:
name— usernamelevel— numericsnmp.SecurityLevel(e.g.authPriv)authProtocol— numericsnmp.AuthProtocols(e.g.sha)authKey— authentication key/passwordprivProtocol— numericsnmp.PrivProtocols(e.g.aes)privKey— privacy/encryption key
If SNMP_USER_CONFIG is not set, the package falls back to reasonable defaults for development (see types in source).
Usage examples
Simple SNMP GET:
import { snmpGet } from "async-snmp";
async function readSysDescr() {
const varbinds = await snmpGet("192.168.1.1", ["1.3.6.1.2.1.1.1.0"]);
console.log(varbinds[0].value.toString());
}Simple SNMP SET:
import { snmpSet } from "async-snmp";
import type { Varbind } from "net-snmp";
const vb: Varbind[] = [
{ oid: "1.3.6.1.2.1.1.5.0", type: 4, value: "newName" }, // example
];
async function setSysName() {
const result = await snmpSet("192.168.1.1", vb);
console.log("Set result:", result);
}Notes
- These helpers use an internal session manager that will reuse sessions per-IP.
- For per-call or per-session credential overrides you can modify the session manager usage in source or extend the API; by default the package uses
SNMP_USER_CONFIGas the manager's default credentials. - The package expects
net-snmpavailable at runtime (listed as a peer dependency). Install it in your project.
Troubleshooting
- If TypeScript complains about
import/exportvs CommonJS, ensuretsconfig.jsonusesmodule: "nodenext"andpackage.jsonhas"type": "module"when targeting ESM. - Do not attempt to bundle
net-snmpif it relies on native components; mark it external in bundlers.
Contributing
PRs are welcome. If you change public API shape, update examples in this README. Add small focused commits and include tests for behavioral changes when possible.
License
MIT
