1. 程式人生 > >nodejs+MQTT協議實現遠端主機控制

nodejs+MQTT協議實現遠端主機控制

摘抄自百度:MQTT(MessageQueuing Telemetry Transport,訊息佇列遙測傳輸)是IBM開發的一個即時通訊協議,有可能成為物聯網的重要組成部分。

所謂物聯網,就是“萬物互聯”,我們的電腦、工控機、開發板什麼的也是“物體”,當然也可以加入“物聯網”。

遠端控制電腦,有很多種方法,如Mstsc、TeamViewer、VNC、SSH、QQ遠端等。在我參與過的幾個物聯網專案中,有這麼一個共性需求:遠端執行一些命令,主要是檢視主機狀態、資源佔用情況、下載檔案、重啟、檢視日誌等。想想看,如果在本地,不就是執行控制檯命令嗎?那麼可以遠端傳送命令,待其執行後,返回控制檯回顯字串,這個過程模擬了本地執行控制檯的全過程。當然,這種方式有一定侷限性,最好只用於單步命令。

Nodejs跨平臺、外掛豐富的特性,使得它特別適合做駐機服務。另外,q.emqtt.com是網上找到的一個免費MQTT服務。下面是利用Nodejs+MQTT外掛實現的駐機控制端:

*****************************cmd.js*******************************

const child_process = require('child_process');

var mqtt =require('mqtt');

var client= mqtt.connect('mqtt://user:[email protected]:1883');

client.on(

'connect', function () {

   client.subscribe('/luoc83');//任意訂閱一個主題,注意不要與其它客戶端衝突

});

client.on('message', function (topic, message) {//接收到訊息推送並處理

   console.log(message.toString());

var msgObj= JSON.parse(message.toString());

var from =msgObj["from"];

var cmd =msgObj["cmd"];

var workerProcess = child_process.exec(cmd,

function (error,stdout, stderr) {

          client.publish(from, stdout);

      });

});

*****************************send.js*******************************

var mqtt =require('mqtt');

var client= mqtt.connect('mqtt://user:[email protected]:1883');

client.on('connect', function () {

var id = '/user007';

   client.subscribe(id);

var cmd = {"from": id, "cmd": "dir d:\\360" };

   client.publish('/luoc83', JSON.stringify(cmd));

});

client.on('message', function (topic, message) {

   console.log(message.toString());

});

**********************************************************

測試步驟:

1)安裝mqtt 外掛: npm install mqtt

2)啟動駐機控制端: node cmd.js

3)啟動測試傳送端: node send.js,將會接收到命令的回顯字串

我是在windows平臺下,測試傳送 “dir d:\\360” 命令,其它命令如”ping 192.168.0.1” 、”ipconfig”等也是“支援良好” ^_^


相關推薦

nodejs+MQTT協議實現遠端主機控制

摘抄自百度:MQTT(MessageQueuing Telemetry Transport,訊息佇列遙測傳輸)是IBM開發的一個即時通訊協議,有可能成為物聯網的重要組成部分。 所謂物聯網,就是“萬物互聯”,我們的電腦、工控機、開發板什麼的也是“物體”,當然也可以加入“物聯

iOS開發之使用MQTT協議實現遠程通訊

lis height msg PE contex 特性 AC eva http p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "PingFang SC" } p.p2 { margin: 0.0px 0.0px 0

mqtt協議實現即時通訊-activemq nginx.支援JS,JAVA,微信小程式

MQTT協議通訊   簡述:            使用MQTT協議實現後臺推送、及時通訊等功能。本案例實現了web-js端、微信小程式端、Java client端、Java serv

使用nodeMCU平臺mqtt協議實現物聯網通訊

國外有個哥們已經寫了一份如何使用nodeMCU平臺玩轉mqtt協議(連結請看附錄),我覺得大部分寫的已經算很清楚,不過有些點,沒提到,我碰了很多次壁,所以呢,我就基於他的文章,加上一些補充。 前言 nodeMCU, MQTT是什麼,本文就不做詳細介紹了。 一個最常見的物

利用expect + sftp 實現遠端主機自動登入及下載

利用expect + sftp 實現遠端主機自動登入及下載: (ssh是一樣的) #!/usr/bin/expect -f ## Create by Cyril. ## "Usage:./downFilesFromStation USER PWD RemoteIP SourcePat

CentOS 7安裝SSHFS 實現遠端主機目錄 掛載為本地目錄

安裝sshfs 官方下載地址 https://github.com/libfuse/sshfs/releases 首先,我們需要安裝sshfs軟體。sshfs是一個基於SSH檔案傳輸協議的檔案系統客戶端,它的官方網頁是:http://fuse.sourceforge.net/sshfs.html

推薦一款遠端主機控制軟體

  以前都是在自己電腦的上建立多套虛擬機器,現在買了薄本,搭建不了虛擬機器,更不要說搭建多臺。一直想搭建輕量級的虛擬機器,但是VirtualBox、Virtual PC等都試過了,要麼windows家庭版不支援,要麼就是搭建起來筆記本吃不消。   想到了阿里雲伺服器,但是發現仍舊太貴了,哈哈。   我自己

利用xp中存在的ms08_067來輕鬆實現遠端桌面控制

本文章為小白up的自我筆記,希望對正在學習的你有所幫助 對於ms08_067的利用 我們知道xp是一個不再更新的系統,但對於一些電腦和使用者任然在使用 在xp中存在了很多的漏洞,今天我們來講ms08_067的漏洞 它可以實現對於xp的遠端桌面的控制 08_0

URI Scheme註冊偽協議實現遠端命令執行

Windows配置登錄檔註冊偽協議 1、新建偽協議項 WIN+R 輸入regedit 開啟登錄檔,在登錄檔HKEY_CLASSES_ROOT鍵中新建一個項,項的名字就是你偽協議的名字,例如我註冊一個cmd協議。 然後不用管預設字串值,新建一個叫URL Procotol的字串值,值為空即可。

【庫和教程】ESP8266 WIFI模組實現遠端wifi控制

http://www.geek-workshop.com/thread-11266-1-1.html  ITEAD首款智慧wifi通用改裝件成功上市:http://www.geek-workshop.com/thread-17944-1-1.html

關於Java RDP協議實現遠端桌面連線的開源專案properjavardp

發現了一個開源的Java RDP專案,很不錯,拿出來和大家分享一下。關於properjavardp的一些說明,可以到這裡看看:http://properjavardp.sourceforge.net/ 。 2、在Eclipse中新建專案,將下載下來的原始碼拷貝到專案中

MQTT協議實現Eclipse Paho學習總結一

一、概述 遙測傳輸 (MQTT) 是輕量級基於代理的釋出/訂閱的訊息傳輸協議,設計思想是開放、簡單、輕量、易於實現。這些特點使它適用於受限環境。例如,但不僅限於此: 網路代價昂貴,頻寬低、不可靠。在嵌入裝置中執行,處理器和記憶體資源有限。 該協議的特點有: 使用

Android訊息推送(二)--基於MQTT協議實現的推送功能

前段時間公司需要android端的手機群推功能,我們就通過MQTT來實現了該功能。 MQTT的官網如下 http://mqtt.org/ 關於系統的主要架構就不詳述了。這關係的到職業道德問題,在這裡

關於MQTT協議實現訊息推送系統

測試環境:  硬碟:1T,5400  (效果不佳) 得出了一個異樣的測試結果: 持久:  插入200000條JSON,共消耗:25.175 s 平均:7944.389275074478 條/秒 插入200000條JSON,共消耗:34.47 s 平均:5802.1467943138

區域網內如何實現遠端桌面控制

講到遠端桌面很多人都不陌生。如果你有一臺雲伺服器,都是通過本地電腦遠端桌面連線來進行伺服器上的檔案管理和配置的。 今天要聊的是區域網內部兩臺電腦的遠端桌面連線。 應用場景:在一場學術報告會上,講者站在舞臺上的講臺前,面前是一臺膝上型電腦,講者可以自己控制,播放自己的PPT。

MQTT協議實現Eclipse Paho學習總結

來源 list 設計 cte soc flush play req log MQTT協議實現Eclipse Paho學習總結摘自:https://www.cnblogs.com/yfliufei/p/4383852.html 2015-04-01 14:57 by 辣椒醬,

MQTT協議實現Android中的訊息收發

前言 MQTT(Message Queuing Telemetry Transport,訊息佇列遙測傳輸),基於釋出/訂閱正規化的訊息協議,是一種極其簡單和輕量級的訊息協議,專為受限裝置和低頻寬、高延遲或不可靠的網路設計。今天主要說明一下MQTT協議在Android中進行訊息的收發應用,關於MQTT協議的基礎

MQTT是IBM開發的一個即時通訊協議,構建於TCP/IP協議上,是物聯網IoT的訂閱協議,借助消息推送功能,可以更好地實現遠程控制

集合 cap 消息處理 簡易 遠程控制 mes ogr 設計思想 成本 最近一直做物聯網方面的開發,以下內容關於使用MQTT過程中遇到問題的記錄以及需要掌握的機制原理,主要講解理論。 背景 MQTT是IBM開發的一個即時通訊協議。MQTT構建於TCP/IP協議上

Android網路開發回顧之旅 ① 在Android手機整合使用MQTT協議實現搞掂移動控制硬體端。(附帶Demo)

一、認識MQTT協議。 如果你對MQTT協議的連線過程不熟悉,那沒關係;請看我前面的8266硬體上介紹的MQTT介紹 ,其實也沒啥難,這個MQTT的好處是短小,資訊傳遞快捷 ,適合在

httpd-2.4實現虛擬主機、訪問控制及https功能

httpd-2.4 安全訪問 https 虛擬主機準備工作:在Centos7中安裝httpd,使用yum安裝或自己編譯安裝,建議使用yum安裝,快捷又方便。 關閉防火墻及selinux。提供兩個基於名稱的虛擬主機www1, www2;有單獨的錯誤日誌和訪問日誌;先建立虛擬主機www1a.在