【问题标题】:Cloud9 and snmpjsCloud9 和 snmpjs
【发布时间】:2013-04-11 21:35:20
【问题描述】:

我目前正在尝试在 c9.io 开发环境中获取适用于 node.js 库 node-snmpjs 的基本示例代码。

示例代码在这里:

https://github.com/wesolows/node-snmpjs

https://npmjs.org/package/snmpjs

var os = require('os');
var snmp = require('snmpjs');
var logger = require('bunyan');

var log = new logger({
    name: 'snmpd',
    level: 'info'
});

var agent = snmp.createAgent({
    log: log
});

agent.request({ oid: '.1.3.6.1.2.1.1.5', handler: function (prq) {
    console.log("Request received");
    var nodename = os.hostname();
    var val = snmp.data.createData({ type: 'OctetString',
        value: nodename });

    snmp.provider.readOnlyScalar(prq, val);
} });

agent.bind({ family: 'udp4', port: 161 });

我尝试将绑定端口更改为:parseInt(process.env.PORT)

当我尝试对 c9 在运行时吐出的地址和端口执行 snmpget 时,它会失败。我也试过:8080。 8080 是 c9 的控制台输出总是说映射到 process.env.PORT。我还尝试了 snmpget 中的 80 端口。

作为后备方案,我还尝试使用 c9 进行基本的 telnet、套接字连接,但无法正常工作......似乎根本问题可能是我不知道什么 IP 和端口正在使用中。

-------------- 编辑 --------- ---

我在 agent.bind 行上尝试了以下变体:

agent.bind({ family: 'udp4', port: parseInt(process.env.PORT), addr: process.env.IP});

agent.bind({ family: 'udp4', port: 17000, addr: process.env.IP});

输出:

Your code is running at 'http://node-dev1.thaspius.c9.io'.
Important: use 'process.env.PORT' as the port and 'process.env.IP' as the host in your scripts!
"127.12.254.129:17000"
ex-c9-node47.prod.rhcloud.com
{"name":"snmpd","hostname":"ex-c9-node47.prod.rhcloud.com","pid":32758,"component":"snmp-agent","level":30,"msg":"Bound to 127.12.254.129:17000","time":"2013-07-31T17:59:56.376Z","v":0}

snmpget 结果:

snmpget -v 2c -c any 127.12.254.129:17000 .1.3.6.1.2.1.1.5
Timeout: No Response from 127.12.254.129:17000.

snmpget -v 2c -c any ex-c9-node47.prod.rhcloud.com:17000 .1.3.6.1.2.1.1.5
Timeout: No Response from ex-c9-node47.prod.rhcloud.com:17000.

snmpget -v 2c -c any node-dev1.thaspius.c9.io:17000 .1.3.6.1.2.1.1.5
Timeout: No Response from node-dev1.thaspius.c9.io:17000.

【问题讨论】:

    标签: node.js snmp cloud9-ide


    【解决方案1】:

    您可能还需要将您的应用程序绑定到特定 IP:process.env.IP。根据 snmpjs 文档,您可以使用 addr 选项(即agent.bind({ family: 'udp4', port: process.env.PORT, addr: process.env.IP }))来做到这一点。另请查看https://c9.io/site/blog/2013/05/can-i-use-cloud9-to-do-x/ 了解更多信息。

    【讨论】:

    • 我曾尝试将端口绑定到 process.env.Port,但没有尝试绑定地址。您提供的链接确实有很好的信息,我会尝试,比如将端口绑定到一个 > 16000 的数字。
    • 我已经编辑了这个问题。更改绑定地址并不能解决问题,也不能将绑定端口更改为 > 16000。
    【解决方案2】:

    当您使用“snmp.provider.readOnlyScalar(prq, val);”时此功能会在您设置的 OID 后自动添加即时 ID“.0”;

    所以你必须运行使用“.1.3.6.1.2.1.1.5.0”: snmpget -v 2c -c 任何节点-dev1.thaspius.c9.io:17000 .1.3.6.1.2.1.1.5.0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2018-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多