亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于安卓平臺的遠程監(jiān)控linux系統(tǒng)設備設計

        2020-12-08 02:12:05孫仲揚
        數(shù)碼設計 2020年16期
        關鍵詞:遠程監(jiān)控

        孫仲揚

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

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

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

        中圖分類號:TP277?? 文獻標識碼:A?? 文章編號:1672-9129(2020)16-0038-02

        方案設計與實現(xiàn):

        1 ssh 遠程登錄

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

        1.2 ssh驗證。從客戶端來看,SSH提供兩種級別的安全驗證。

        第一種級別(基于口令的安全驗證)

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

        第二種級別(基于密匙的安全驗證)

        需要依靠密匙,也就是你必須為自己創(chuàng)建一對密匙,并把公用密匙放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發(fā)出請求,請求用你的密匙進行安全驗證。服務器收到請求之后,先在該服務器上你的主目錄下尋找你的公用密匙,然后把它和你發(fā)送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密“質詢”(challenge)并把它發(fā)送給客戶端軟件。客戶端軟件收到“質詢”之后就可以用你的私人密匙解密再把它發(fā)送給服務器。

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

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

        1.3 ssh庫選用。在本項目中引入jsch庫,jsch 是一個基于ssh的java庫,可以支持安卓設備用于ssh登錄以及文件傳輸,shell腳本操作,由于android基于java語言進行開發(fā),所以可以以導入jar包的方式導入jsch庫。

        1.4異步任務庫選用。

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

        Rxjava引入,用于異步任務操作,并且可以在主線程子線程中切換,因為連接,傳輸文件屬于耗時操作,不能夠在主線程中進行,rxjava還帶有錯誤處理機制,在連接錯誤的時候可以進行處理。

        RxJava特點

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

        ·異步

        ·事件驅動的

        ·基于觀察者模式

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

        ·并發(fā),可以很容易實現(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,檢測對方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) {

        //連接成功,接下來的工作在這里進行

        }

        });

        }

        2 scp讀取文件

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

        scp命令是 SSH 中最方便有用的命令了,試想,在兩臺服務器之間直接傳送文件,僅僅用 scp 一個命令就完全解決了。你可以在一臺服務器上以 root 身份運行 #scp servername:/home/ftp/pub/file1 ./ 這樣就把另一臺服務器上的文件 /home/ftp/pub/file1 直接傳到本機器的當前目錄下,當然你也可以用 #scp /tmp/file2 servername:/boot 把本機上的文件 /tmp/file2 送到另一臺機器的 /boot 目錄下。而且整個傳送過程仍然是用 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 安卓設備讀取xml文件并解析

        可擴展標記語言,標準通用標記語言的子集,是一種用于標記電子文件使其具有結構性的標記語言。

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

        Pull解析XML:

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

        常用接口類:XmlPullParser, XmlSreializer, XmlPullParserFactory

        特點是代碼實現(xiàn)較為簡單,非常適合移動設備,安卓系統(tǒng)內置pull解析器,而且安卓系統(tǒng)內部默認使用pull來解析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 將解析出來的信息存入安卓本地sqlite數(shù)據(jù)庫

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

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

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

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

        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ù)庫信息并顯示在手機屏幕上屏幕

        通過Ormlitedatabasehelper讀取數(shù)據(jù)庫中數(shù)據(jù),寫入手機屏幕相應的布局當中。

        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 驗證

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

        7 總結優(yōu)缺點

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

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

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

        參考文獻:

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

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

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

        猜你喜歡
        遠程監(jiān)控
        遠程監(jiān)控在電力調度自動化系統(tǒng)中的應用研究
        露天礦運輸站場邊坡穩(wěn)態(tài)遠程監(jiān)控及工程對策
        變電站直流電源智能化在線遠程監(jiān)測系統(tǒng)的實際應用
        基于數(shù)據(jù)融合的家庭遠程監(jiān)護系統(tǒng)研究
        保鮮庫智能溫度遠程監(jiān)控系統(tǒng)
        數(shù)據(jù)中心服務器運行狀態(tài)監(jiān)控系統(tǒng)研究 
        軟件導刊(2016年9期)2016-11-07 22:08:14
        基于Android的青少年監(jiān)護系統(tǒng)設計與實現(xiàn) 
        軟件導刊(2016年9期)2016-11-07 21:37:09
        論城市消防遠程監(jiān)控系統(tǒng)的現(xiàn)狀及發(fā)展趨勢
        水電站集控兼遠程監(jiān)控及調度中心系統(tǒng)建設的探究
        基于力控的輔助運輸設備遠程監(jiān)控系統(tǒng)
        亚洲欧洲无码一区二区三区| 亚洲日韩一区精品射精| 国产在线精品一区二区三区直播| 成人免费无码大片a毛片抽搐色欲| 三年片免费观看大全有| 亚洲中文字幕无码爆乳| 国产精品无码日韩欧| 亚洲中文字幕无码卡通动漫野外| 水蜜桃亚洲一二三四在线| 亚洲av成本人无码网站| 久久精品国产亚洲5555| 一区二区三区婷婷中文字幕| 亚洲中字永久一区二区三区| 中文字幕av长濑麻美| 免费国产在线精品一区| 漂亮人妻被中出中文字幕久久| 国产一区二区三区av在线无码观看| 亚洲欧美另类日本久久影院| 国产啪啪视频在线观看| 国产午夜免费一区二区三区视频| 夜夜高潮夜夜爽夜夜爱爱一区| 亚洲精品乱码8久久久久久日本| 内射精品无码中文字幕| 极品美女高潮喷白浆视频| 国产自产拍精品视频免费看 | 人妻乱交手机在线播放| 亚洲av无码成h在线观看| 97夜夜澡人人双人人人喊| 欧美大香线蕉线伊人久久| 狠狠躁夜夜躁人人爽天天不卡| 亚洲激情一区二区三区视频| 一本一道久久综合久久| 朝鲜女人大白屁股ass孕交| 国产精品熟女一区二区| 久久AV中文一区二区三区| 欧洲无码一级毛片无遮挡| 中文字幕日本在线乱码| 白嫩丰满少妇av一区二区| 美女av一区二区三区| 国产女精品视频网站免费| 亚欧免费视频一区二区三区|