首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cloud9和snmpjs

Cloud9和snmpjs
EN

Stack Overflow用户
提问于 2013-04-12 05:35:20
回答 2查看 900关注 0票数 2

我目前正在尝试为c9.io开发环境中的node.js库node-snmpjs提供基本的示例代码。

示例代码如下:

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

https://npmjs.org/package/snmpjs

代码语言:javascript
复制
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。C9的控制台输出总是显示is映射到process.env.PORT,我也尝试过snmpget中的80端口。

作为退路,我还尝试了使用c9建立基本的远程登录、套接字连接,但无法正常工作……看起来问题的根源可能是我不知道使用了什么IP和端口。

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

代码语言:javascript
复制
agent.bind({ family: 'udp4', port: parseInt(process.env.PORT), addr: process.env.IP});

代码语言:javascript
复制
agent.bind({ family: 'udp4', port: 17000, addr: process.env.IP});

输出:

代码语言:javascript
复制
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结果:

代码语言:javascript
复制
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.
EN

回答 2

Stack Overflow用户

发布于 2013-07-31 17:59:27

您可能还需要将您的应用程序绑定到一个特定的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/上查看更多信息。

票数 2
EN

Stack Overflow用户

发布于 2014-11-17 15:41:13

因为你使用了"snmp.provider.readOnlyScalar(prq,val);“这个函数会在你设置的OID后自动添加即时id ".0”;

因此您必须使用“.1.3.6.1.2.1.1.5.0”运行: snmpget -v 2c -c any node-dev1.thaspius.c9.io:17000 .1.3.6.1.2.1.1.5.0

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15959290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档