国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于安卓平臺(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)行開(kāi)發(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)聽(tīng)),過(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)的

·基于觀察者模式

·專門(mén)的出錯(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的縮寫(xiě),是用來(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提供了開(kāi)始元素和結(jié)束元素,當(dāng)某個(gè)元素開(kāi)始時(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這兩款開(kāi)源的世界著名數(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ù)操作輔助的開(kāi)源框架,底層還是Sqlite。O-R-M是Object relational mapping(對(duì)象關(guān)系映射)的縮寫(xiě),即業(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ù),寫(xiě)入手機(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ò),打開(kāi)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)殖控制研究