2

私は現在、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.
4

2 に答える 2

0

「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

于 2014-11-17T07:41:12.513 に答える