Как подключиться к RouterOS через Nodejs WebSocket?

Я изучаю websocket nodejs, я хочу подключиться к routeros через websocket, например 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
});

Я ищу образцы кода для подключения к routeros через сокет nodejs, надеюсь, кто-то поделится здесь.

Заранее спасибо, я очень ценю любой ответ.


person Renomu Reza    schedule 08.03.2021    source источник


Ответы (1)


Примите во внимание следующие вещи:

  • RouterOS API имеет собственный протокол, он немного усложнен. официальная вики рассказывает нам, как взаимодействовать с ним на НИЗКОМ УРОВНЕ. По этой причине это очень трудно понять. Не для программиста высокого уровня. Не волнуйтесь, мы все прошли через это.
  • У Routeros v7 есть REST API, который облегчит работу, язык обмена — протокол HTTP, не так ли? На самом деле находится на beta стадии.
  • В Wiki RouterOS есть другой пакет для 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();

       });
    });
 });
person gilito    schedule 08.03.2021
comment
До сих пор я использовал пакет узла routeros, все работает нормально. Однако, поскольку разработка была остановлена, я хотел сделать свой собственный пакет. Теперь, когда я знаю, как это работает, и что я могу подключиться к routeros, используя свой собственный код, просмотрев некоторые пакеты на Github, мне нужно узнать о буферах данных. Что касается RouterOS V7 REST API, это классная функция, мне не терпится попробовать ее в стабильной версии. Когда эта функция будет выпущена в стабильной версии? - person Renomu Reza; 09.03.2021
comment
Думаю, никто не знает ;) v7 находится в стадии бета-тестирования уже больше года... или двух ;) Если вы понимаете низкоуровневые процедуры, вперед! Пожалуйста, если вы считаете ответ полезным, проверьте его ;) Большое спасибо! - person gilito; 09.03.2021