问题描述
我正在学习websocket nodejs,想通过websocket连接routeros,比如https://github.com/aluisiora/node-routeros/包,包太宽泛,我就是想知道怎么连接。
我已阅读官方文档 https://wiki.mikrotik.com/wiki/Manual:API,但我无法理解它。
我已经尝试过这种方式,但没有得到任何回应:
client.connect(port,host,function () {
console.log("Connected");
client.write(encodeString("/login"));
client.write(encodeString(`=name=${user}`));
client.write(encodeString(`=password=${password}`));
});
client.on("data",function (data) {
console.log("Received: " + data); // not excetue
});
我正在寻找通过 nodejs 套接字连接到路由器的代码示例,希望有人在这里分享。
提前致谢,我非常感谢您的回答。
解决方法
考虑接下来的事情:
- RouterOS API 有自己的协议,但有点复杂。 official wiki 告诉我们如何在 LOW LEVEL 与它互动。由于这些原因,很难理解。不适合高级程序员。别担心,我们都经历过这里。
- Routeros v7 有一个 REST API,这将使工作更容易,交换语言是 HTTP 协议,简单吧?实际上处于
beta
阶段。 - RouterOS Wiki 有其他似乎更简单的 node.js 包:Mikronode
解决方案
安装 mikronode
包
$ npm install mikronode
使用它:
var api = require('mikronode');
var connection = new api('192.168.0.1','admin','password');
connection.connect(function(conn) {
var chan=conn.openChannel();
chan.write('/ip/address/print',function() {
chan.on('done',function(data) {
var parsed = api.parseItems(data);
parsed.forEach(function(item) {
console.log('Interface/IP: '+item.interface+"/"+item.address);
});
chan.close();
conn.close();
});
});
});