999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2020-12-08 02:12:05孫仲揚(yáng)
數(shù)碼設(shè)計(jì) 2020年16期

孫仲揚(yáng)

摘要:越來越多的設(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í)間越來越少,使用手機(jī)越來越多,本設(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è)備問題,便于設(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簡介。SSH[1] (Secure Shell,安全協(xié)議外殼)是由 IETF ( Internet Engineering Task Force,國際 互聯(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)證。從客戶端來看,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ù)器上。如果你要連接到SSH服務(wù)器上,客戶端軟件就會(huì)向服務(wù)器發(fā)出請(qǐng)求,請(qǐng)求用你的密匙進(jìn)行安全驗(yàn)證。服務(wù)器收到請(qǐng)求之后,先在該服務(wù)器上你的主目錄下尋找你的公用密匙,然后把它和你發(fā)送過來的公用密匙進(jìn)行比較。如果兩個(gè)密匙一致,服務(wù)器就用公用密匙加密“質(zhì)詢”(challenge)并把它發(fā)送給客戶端軟件。客戶端軟件收到“質(zhì)詢”之后就可以用你的私人密匙解密再把它發(fā)送給服務(wù)器。

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

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

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

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

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

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

}

});

}

2 scp讀取文件

scp是secure copy的縮寫,是用來進(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è)傳送過程仍然是用 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)記語言,標(biāo)準(zhǔn)通用標(biāo)記語言的子集,是一種用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言。

在電子計(jì)算機(jī)中,標(biāo)記指計(jì)算機(jī)所能理解的信息符號(hào),通過此種標(biāo)記,計(jì)算機(jī)之間可以處理包含各種的信息比如文章等。它可以用來標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對(duì)自己的標(biāo)記語言進(jìn)行定義的源語言。它非常適合萬維網(wǎng)傳輸,提供統(tǒng)一的方法來描述和交換獨(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ī)范,使用它來簡化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)較為簡單,非常適合移動(dòng)設(shè)備,安卓系統(tǒng)內(nèi)置pull解析器,而且安卓系統(tǒng)內(nèi)部默認(rèn)使用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的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它包含在一個(gè)相對(duì)小的C庫中。它是D.RichardHipp建立的公有領(lǐng)域項(xiàng)目。它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語言相結(jié)合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源的世界著名數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。SQLite第一個(gè)Alpha版本誕生于2000年5月。

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

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

建立javabean文件,用來映射數(shù)據(jù)表中數(shù)據(jù),建立ormlitedatabasehelper建立java與sqlite數(shù)據(jù)庫之間的關(guān)系,將解析出來的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ù)庫信息并顯示在手機(jī)屏幕上屏幕

通過Ormlitedatabasehelper讀取數(shù)據(jù)庫中數(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)行讀取要建立更長時(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 屆全國計(jì)算機(jī)新科技與計(jì)算機(jī)繼續(xù)教育學(xué)術(shù)會(huì)議,秦皇 島,2004.

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

主站蜘蛛池模板: 国产美女自慰在线观看| 欧美精品1区| 亚洲高清在线播放| 国产成人高清亚洲一区久久| 日韩高清无码免费| 美美女高清毛片视频免费观看| 国产精品一区二区不卡的视频| 亚洲伊人电影| 五月婷婷导航| 在线a视频免费观看| 精品国产欧美精品v| 色悠久久综合| 欧美视频在线不卡| 亚洲欧美激情小说另类| 久久国产拍爱| 网友自拍视频精品区| 国产真实二区一区在线亚洲| 久久网欧美| 国产亚洲精品资源在线26u| 亚洲欧美色中文字幕| 日韩乱码免费一区二区三区| 国产高清精品在线91| 中日韩一区二区三区中文免费视频| 亚洲视频无码| 久久青草精品一区二区三区| 自慰高潮喷白浆在线观看| 日韩人妻精品一区| 国产丰满大乳无码免费播放| 欧美全免费aaaaaa特黄在线| 国产一区二区精品高清在线观看| 久久国产精品国产自线拍| 色偷偷一区二区三区| 男人天堂伊人网| 天堂中文在线资源| 无码专区国产精品第一页| 欧美综合区自拍亚洲综合绿色| 亚洲一区二区精品无码久久久| 2019年国产精品自拍不卡| 无码网站免费观看| 国产免费久久精品99re不卡| 亚洲国产精品无码AV| 无码粉嫩虎白一线天在线观看| 精品91在线| 亚洲欧美一区二区三区麻豆| 欧美国产成人在线| 国产毛片高清一级国语| 黄色网在线免费观看| 91精品网站| 亚洲日韩欧美在线观看| 日韩无码黄色| 中文精品久久久久国产网址| 亚洲最大福利视频网| 日本亚洲成高清一区二区三区| 亚洲成综合人影院在院播放| 欧美精品三级在线| 一本久道久久综合多人| 国产精品一区二区无码免费看片| 国产成人亚洲精品色欲AV| 毛片网站免费在线观看| 国产爽妇精品| 久久香蕉国产线看观看精品蕉| 久久精品国产电影| 青青极品在线| 成人在线第一页| 国产精品手机在线播放| 精品人妻系列无码专区久久| 国产亚洲欧美另类一区二区| 免费无码在线观看| 真人高潮娇喘嗯啊在线观看| 日韩欧美视频第一区在线观看| 美女视频黄又黄又免费高清| 亚洲大尺码专区影院| 又猛又黄又爽无遮挡的视频网站| 亚洲综合久久一本伊一区| 久久国产乱子伦视频无卡顿| 天天综合网站| 国产人碰人摸人爱免费视频| 全免费a级毛片免费看不卡| 国产亚洲精品91| 无码精油按摩潮喷在线播放| 欧美啪啪一区| 亚洲视频免|