• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于安卓平臺(tái)的遠(yuǎn)程監(jiān)控linux系統(tǒng)設(shè)備設(shè)計(jì)

      2020-12-08 02:12孫仲揚(yáng)
      數(shù)碼設(shè)計(jì) 2020年16期
      關(guān)鍵詞:遠(yuǎn)程監(jiān)控

      孫仲揚(yáng)

      摘要:越來(lái)越多的設(shè)備使用linux作為操作系統(tǒng),為了實(shí)現(xiàn)對(duì)設(shè)備的遠(yuǎn)程監(jiān)控與診斷,一般都將設(shè)備接入互聯(lián)網(wǎng)(或者局域網(wǎng)),再由一臺(tái)電腦接入該網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程登錄,達(dá)到數(shù)據(jù)交換,傳輸?shù)哪康摹?/p>

      如今,安卓手機(jī)已經(jīng)相當(dāng)普及,由于操作手機(jī)的便捷性,人們操作電腦的時(shí)間越來(lái)越少,使用手機(jī)越來(lái)越多,本設(shè)計(jì)基于安卓系統(tǒng)平臺(tái),實(shí)現(xiàn)對(duì)linux系統(tǒng)設(shè)備進(jìn)行遠(yuǎn)程監(jiān)控,及時(shí)發(fā)現(xiàn)設(shè)備問(wèn)題,便于設(shè)備使用人員及管理人員使用,并且對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),并且有利于之后對(duì)數(shù)據(jù)進(jìn)行進(jìn)一步分析挖掘。

      關(guān)鍵詞:遠(yuǎn)程登錄;遠(yuǎn)程監(jiān)控;linux系統(tǒng)設(shè)備

      中圖分類號(hào):TP277?? 文獻(xiàn)標(biāo)識(shí)碼:A?? 文章編號(hào):1672-9129(2020)16-0038-02

      方案設(shè)計(jì)與實(shí)現(xiàn):

      1 ssh 遠(yuǎn)程登錄

      1.1 ssh簡(jiǎn)介。SSH[1] (Secure Shell,安全協(xié)議外殼)是由 IETF ( Internet Engineering Task Force,國(guó)際 互聯(lián)網(wǎng)工程任務(wù)組)制定的一族協(xié)議,提供安全遠(yuǎn)程登錄、安全文件傳輸?shù)染W(wǎng)絡(luò)服務(wù)功 能,還可以為其它應(yīng)用層協(xié)議提供安全“通道”。SSH 對(duì)服務(wù)端和客戶端提供相互的 身份驗(yàn)證功能,并且保證傳輸數(shù)據(jù)的加密性和完整性。使用 SSH 還有一個(gè)額外的優(yōu)點(diǎn):它會(huì)壓縮傳輸?shù)臄?shù)據(jù),縮短傳輸所需的時(shí)間。SSH 協(xié)議的軟件程序由客戶端和服務(wù)器兩部分組成,以網(wǎng)絡(luò)應(yīng)用層和傳輸層為基礎(chǔ) [2]。

      1.2 ssh驗(yàn)證。從客戶端來(lái)看,SSH提供兩種級(jí)別的安全驗(yàn)證。

      第一種級(jí)別(基于口令的安全驗(yàn)證)

      只要你知道自己帳號(hào)和口令,就可以登錄到遠(yuǎn)程主機(jī)。所有傳輸?shù)臄?shù)據(jù)都會(huì)被加密,但是不能保證你正在連接的服務(wù)器就是你想連接的服務(wù)器[3]??赡軙?huì)有別的服務(wù)器在冒充真正的服務(wù)器,也就是受到“中間人”這種方式的攻擊。

      第二種級(jí)別(基于密匙的安全驗(yàn)證)

      需要依靠密匙,也就是你必須為自己創(chuàng)建一對(duì)密匙,并把公用密匙放在需要訪問(wèn)的服務(wù)器上。如果你要連接到SSH服務(wù)器上,客戶端軟件就會(huì)向服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求用你的密匙進(jìn)行安全驗(yàn)證。服務(wù)器收到請(qǐng)求之后,先在該服務(wù)器上你的主目錄下尋找你的公用密匙,然后把它和你發(fā)送過(guò)來(lái)的公用密匙進(jìn)行比較。如果兩個(gè)密匙一致,服務(wù)器就用公用密匙加密“質(zhì)詢”(challenge)并把它發(fā)送給客戶端軟件??蛻舳塑浖盏健百|(zhì)詢”之后就可以用你的私人密匙解密再把它發(fā)送給服務(wù)器。

      用這種方式,你必須知道自己密匙的口令。但是,與第一種級(jí)別相比,第二種級(jí)別不需要在網(wǎng)絡(luò)上傳送口令。

      綜上所述,選用安全的ssh協(xié)議來(lái)登錄linux設(shè)備。驗(yàn)證方式由于驗(yàn)證的數(shù)控機(jī)床只支持賬號(hào)和口令的方式,所以選用第一種方式。

      1.3 ssh庫(kù)選用。在本項(xiàng)目中引入jsch庫(kù),jsch 是一個(gè)基于ssh的java庫(kù),可以支持安卓設(shè)備用于ssh登錄以及文件傳輸,shell腳本操作,由于android基于java語(yǔ)言進(jìn)行開發(fā),所以可以以導(dǎo)入jar包的方式導(dǎo)入jsch庫(kù)。

      1.4異步任務(wù)庫(kù)選用。

      此外,還有一個(gè)很重要的庫(kù)。Rx(ReactiveX,響應(yīng)式編程)是一種事件驅(qū)動(dòng)的基于異步數(shù)據(jù)流的編程模式,整個(gè)數(shù)據(jù)流就像一條河流,它可以被觀測(cè)(監(jiān)聽),過(guò)濾,操控或者與其他數(shù)據(jù)流合并為一條新的數(shù)據(jù)流。而RxJava是.Net Rx在JVM上的實(shí)現(xiàn)。RxJava可以應(yīng)用于大部分基于JVM的語(yǔ)言,如Scala,Groovy等。

      Rxjava引入,用于異步任務(wù)操作,并且可以在主線程子線程中切換,因?yàn)檫B接,傳輸文件屬于耗時(shí)操作,不能夠在主線程中進(jìn)行,rxjava還帶有錯(cuò)誤處理機(jī)制,在連接錯(cuò)誤的時(shí)候可以進(jìn)行處理。

      RxJava特點(diǎn)

      ·函數(shù)響應(yīng)式編程

      ·異步

      ·事件驅(qū)動(dòng)的

      ·基于觀察者模式

      ·專門的出錯(cuò)處理,當(dāng)使用RxJava出現(xiàn)錯(cuò)誤時(shí),它不會(huì)直接拋出異常,而是會(huì)執(zhí)行OnError()方法;

      ·并發(fā),可以很容易實(shí)現(xiàn)多線程

      1.5建立連接。

      private void initPingCNCData(final String ip, final String password, final CallbackContext callbackContext){

      Observable.create(new Observable.OnSubscribe() {

      @Override

      public void call(Subscriber<? super String> subscriber) {

      //1.ping device,檢測(cè)對(duì)方ip是否能聯(lián)通

      boolean res = AllUitls.ping(ip, 3);

      //2.建立session連接

      JSch jsch = new JSch();

      try {

      session = jsch.getSession(HOST, ip, 22);

      session.setPassword(password);

      session.connect();

      int result = 0;

      //根據(jù)返回值判斷是否連接成功

      if (!res) {

      callbackContext.error("connectfalse");

      } else {

      subscriber.onNext("Device connected");

      //建立連接完成,可讀取數(shù)據(jù)

      getFilesInfo (session);

      subscriber.onCompleted();

      }

      } catch (JSchException e) {

      e.printStackTrace();

      }

      }

      }

      }).subscribeOn(Schedulers.io())

      .timeout(20, TimeUnit.SECONDS)

      .observeOn(AndroidSchedulers.mainThread())

      .subscribe(new Subscriber() {

      @Override

      public void onError(Throwable throwable) {

      callbackContext.error("connectfalse");

      }

      @Override

      public void onNext(String str) {

      //連接成功,接下來(lái)的工作在這里進(jìn)行

      }

      });

      }

      2 scp讀取文件

      scp是secure copy的縮寫,是用來(lái)進(jìn)行遠(yuǎn)程文件拷貝的。數(shù)據(jù)傳輸使用 ssh,并且和ssh 使用相同的認(rèn)證方式,提供相同的安全保證。

      scp命令是 SSH 中最方便有用的命令了,試想,在兩臺(tái)服務(wù)器之間直接傳送文件,僅僅用 scp 一個(gè)命令就完全解決了。你可以在一臺(tái)服務(wù)器上以 root 身份運(yùn)行 #scp servername:/home/ftp/pub/file1 ./ 這樣就把另一臺(tái)服務(wù)器上的文件 /home/ftp/pub/file1 直接傳到本機(jī)器的當(dāng)前目錄下,當(dāng)然你也可以用 #scp /tmp/file2 servername:/boot 把本機(jī)上的文件 /tmp/file2 送到另一臺(tái)機(jī)器的 /boot 目錄下。而且整個(gè)傳送過(guò)程仍然是用 SSH 加密的

      private int getFilesInfo(String fileFullPath, Session session) {

      int res = -1;

      String[] arg = new String[2];

      arg[0] = fileFullPath;

      arg[1] = cordova.getActivity().getFilesDir() + File.separator + temp;

      int count = 3;

      do {

      res = ScpFrom.scpFrom(arg, session);

      count--;

      } while (res != 0 && count != 0);

      return res;

      }

      3 安卓設(shè)備讀取xml文件并解析

      可擴(kuò)展標(biāo)記語(yǔ)言,標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的子集,是一種用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語(yǔ)言。

      在電子計(jì)算機(jī)中,標(biāo)記指計(jì)算機(jī)所能理解的信息符號(hào),通過(guò)此種標(biāo)記,計(jì)算機(jī)之間可以處理包含各種的信息比如文章等。它可以用來(lái)標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對(duì)自己的標(biāo)記語(yǔ)言進(jìn)行定義的源語(yǔ)言。它非常適合萬(wàn)維網(wǎng)傳輸,提供統(tǒng)一的方法來(lái)描述和交換獨(dú)立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。是Internet環(huán)境中跨平臺(tái)的、依賴于內(nèi)容的技術(shù),也是當(dāng)今處理分布式結(jié)構(gòu)信息的有效工具。早在1998年,W3C就發(fā)布了XML1.0規(guī)范,使用它來(lái)簡(jiǎn)化Internet的文檔信息傳輸。

      Pull解析XML:

      Xml pull提供了開始元素和結(jié)束元素,當(dāng)某個(gè)元素開始時(shí),我們可以調(diào)用parser.nextText從XML文檔中提取所有字符數(shù)據(jù)。當(dāng)解釋到一個(gè)文檔結(jié)束時(shí),自動(dòng)生成EndDocument

      常用接口類:XmlPullParser, XmlSreializer, XmlPullParserFactory

      特點(diǎn)是代碼實(shí)現(xiàn)較為簡(jiǎn)單,非常適合移動(dòng)設(shè)備,安卓系統(tǒng)內(nèi)置pull解析器,而且安卓系統(tǒng)內(nèi)部默認(rèn)使用pull來(lái)解析xml文件

      case XmlPullParser.START_TAG:

      if (parser.getName().equals("Name")) {

      String temp = parser.nextText();

      if (temp.contains("SINUMERIK")) {

      res += "{\\\\"name\\\\":\\\\"" + temp + "\\\\",";

      }

      } else if (parser.getName().equals("MLFB")) {

      res += "\\\\"mlfb\\\\":\\\\"" + parser.nextText()+ "\\\\",";

      }

      else if (parser.getName().equals("SerialNo")) {

      res += "\\\\"serialno\\\\":\\\\"" + parser.nextText()+ "\\\\",";

      }

      else if (parser.getName().equals("HW-ID")) {

      res += "\\\\"hwid\\\\":\\\\"" + parser.nextText()+ "\\\\",";

      finishFlag = false;

      }

      break;

      case XmlPullParser.END_TAG:

      break;

      4 將解析出來(lái)的信息存入安卓本地sqlite數(shù)據(jù)庫(kù)

      SQLite是一款輕型的數(shù)據(jù)庫(kù),是遵守ACID的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它包含在一個(gè)相對(duì)小的C庫(kù)中。它是D.RichardHipp建立的公有領(lǐng)域項(xiàng)目。它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語(yǔ)言相結(jié)合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源的世界著名數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)講,它的處理速度比他們都快。SQLite第一個(gè)Alpha版本誕生于2000年5月。

      安卓系統(tǒng)中使用的就是sqlite數(shù)據(jù)庫(kù)。在本系統(tǒng)中應(yīng)用對(duì)sqlite進(jìn)行封裝后的Ormlite框架。

      OrmLite是一個(gè)數(shù)據(jù)庫(kù)操作輔助的開源框架,底層還是Sqlite。O-R-M是Object relational mapping(對(duì)象關(guān)系映射)的縮寫,即業(yè)務(wù)實(shí)體對(duì)象與關(guān)系型數(shù)據(jù)庫(kù)之間的映射。對(duì)象中的屬性與數(shù)據(jù)庫(kù)表中的字段一一對(duì)應(yīng)。OrmLite直接操作業(yè)務(wù)對(duì)象,隱藏了數(shù)據(jù)庫(kù)操作的細(xì)節(jié),使我們不用通過(guò)sql語(yǔ)句與數(shù)據(jù)庫(kù)打交道。OrmLite通過(guò)Java注解的方式與數(shù)據(jù)庫(kù)建立映射關(guān)系。

      建立javabean文件,用來(lái)映射數(shù)據(jù)表中數(shù)據(jù),建立ormlitedatabasehelper建立java與sqlite數(shù)據(jù)庫(kù)之間的關(guān)系,將解析出來(lái)的xml數(shù)據(jù)存入數(shù)據(jù)庫(kù)中。

      public void upDateParam(String key, String value, String type, String user_name, String project_name, int paramnum) throws SQLException {

      ParamAll paramAll = getParamEach(type, key, user_name, project_name, paramnum).get(0);

      paramAll.setValue(value);

      Dao dao = getDao(ParamAll.class);

      dao.update(paramAll);

      }

      5 讀取數(shù)據(jù)庫(kù)信息并顯示在手機(jī)屏幕上屏幕

      通過(guò)Ormlitedatabasehelper讀取數(shù)據(jù)庫(kù)中數(shù)據(jù),寫入手機(jī)屏幕相應(yīng)的布局當(dāng)中。

      textView1.setText(listview.get(0));

      textView2.setText(listview.get(1));

      textView3.setText(listview.get(2));

      textView4.setText(listview.get(3));

      textView5.setText(listview.get(4));

      6 驗(yàn)證

      將一臺(tái)數(shù)控機(jī)床(Linux操作系統(tǒng))接入局域網(wǎng),設(shè)置好登錄名,密碼,以及ip地址。將手機(jī)連入該網(wǎng)絡(luò),打開app進(jìn)行連接,讀取機(jī)床參數(shù),并顯示在界面上

      7 總結(jié)優(yōu)缺點(diǎn)

      優(yōu)點(diǎn),可以在任何安卓端獲取設(shè)備狀態(tài)信息,對(duì)設(shè)備進(jìn)行監(jiān)控,當(dāng)設(shè)備故障報(bào)警時(shí),可以及時(shí)進(jìn)行處理,大大提高了設(shè)備運(yùn)行效率。

      缺點(diǎn),實(shí)時(shí)性有待提高,只能在用戶想要讀取數(shù)據(jù)的時(shí)候去讀取數(shù)據(jù),如果要持續(xù)對(duì)數(shù)據(jù)進(jìn)行讀取要建立更長(zhǎng)時(shí)間的連接,可以應(yīng)用安卓系統(tǒng)的service組件進(jìn)行后臺(tái)活動(dòng),持續(xù)讀取設(shè)備信息。

      在網(wǎng)絡(luò)條件不好的情況下會(huì)讀取失敗,應(yīng)該建立更完善的容錯(cuò)機(jī)制。

      參考文獻(xiàn):

      [1]BARRETT D J, SILVERMANN R E. SSH, The Secure Shell[M]. Sebastopol, CA:O'Reilly, 2001.

      [2]史倩竹. SSH 協(xié)議分析與研究.第 15 屆全國(guó)計(jì)算機(jī)新科技與計(jì)算機(jī)繼續(xù)教育學(xué)術(shù)會(huì)議,秦皇 島,2004.

      [3]Petersen R Linux技術(shù)大全I(xiàn)-M].北京:機(jī)械工業(yè)出版 社,2002:155~156

      猜你喜歡
      遠(yuǎn)程監(jiān)控
      遠(yuǎn)程監(jiān)控在電力調(diào)度自動(dòng)化系統(tǒng)中的應(yīng)用研究
      露天礦運(yùn)輸站場(chǎng)邊坡穩(wěn)態(tài)遠(yuǎn)程監(jiān)控及工程對(duì)策
      變電站直流電源智能化在線遠(yuǎn)程監(jiān)測(cè)系統(tǒng)的實(shí)際應(yīng)用
      基于數(shù)據(jù)融合的家庭遠(yuǎn)程監(jiān)護(hù)系統(tǒng)研究
      保鮮庫(kù)智能溫度遠(yuǎn)程監(jiān)控系統(tǒng)
      數(shù)據(jù)中心服務(wù)器運(yùn)行狀態(tài)監(jiān)控系統(tǒng)研究 
      基于Android的青少年監(jiān)護(hù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 
      一種遠(yuǎn)程裁斷機(jī)健康監(jiān)測(cè)系統(tǒng)
      基于物聯(lián)網(wǎng)的遠(yuǎn)程水產(chǎn)養(yǎng)殖控制研究
      三原县| 德惠市| 鲜城| 武陟县| 兴安盟| 荆门市| 崇明县| 靖远县| 清徐县| 扶风县| 昌邑市| 广昌县| 济阳县| 宁安市| 永福县| 启东市| 中牟县| 多伦县| 北海市| 沐川县| 河南省| 成武县| 晴隆县| 翁源县| 文成县| 大庆市| 琼海市| 扶风县| 江阴市| 宣化县| 尉犁县| 乌恰县| 普定县| 公安县| 寻乌县| 临安市| 合山市| 宁陕县| 涞水县| 师宗县| 公主岭市|