期刊VIP學術指導 符合學術規范和道德
保障品質 保證專業,沒有后顧之憂
摘要:越來越多的設備使用linux作為操作系統,為了實現對設備的遠程監控與診斷,一般都將設備接入互聯網(或者局域網),再由一臺電腦接入該網絡進行遠程登錄,達到數據交換,傳輸的目的。
如今,安卓手機已經相當普及,由于操作手機的便捷性,人們操作電腦的時間越來越少,使用手機越來越多,本設計基于安卓系統平臺,實現對linux系統設備進行遠程監控,及時發現設備問題,便于設備使用人員及管理人員使用,并且對數據進行存儲,并且有利于之后對數據進行進一步分析挖掘。
關鍵詞:遠程登錄;遠程監控;linux系統設備
方案設計與實現:
1 ssh 遠程登錄
1.1 ssh簡介。SSH[1] (Secure Shell,安全協議外殼)是由 IETF ( Internet Engineering Task Force,國際 互聯網工程任務組)制定的一族協議,提供安全遠程登錄、安全文件傳輸等網絡服務功 能,還可以為其它應用層協議提供安全“通道”。SSH 對服務端和客戶端提供相互的 身份驗證功能,并且保證傳輸數據的加密性和完整性。使用 SSH 還有一個額外的優點:它會壓縮傳輸的數據,縮短傳輸所需的時間。SSH 協議的軟件程序由客戶端和服務器兩部分組成,以網絡應用層和傳輸層為基礎 [2]。
1.2 ssh驗證。從客戶端來看,SSH提供兩種級別的安全驗證。
第一種級別(基于口令的安全驗證)
只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密,但是不能保證你正在連接的服務器就是你想連接的服務器[3]。可能會有別的服務器在冒充真正的服務器,也就是受到“中間人”這種方式的攻擊。
第二種級別(基于密匙的安全驗證)
需要依靠密匙,也就是你必須為自己創建一對密匙,并把公用密匙放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之后,先在該服務器上你的主目錄下尋找你的公用密匙,然后把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密“質詢”(challenge)并把它發送給客戶端軟件。客戶端軟件收到“質詢”之后就可以用你的私人密匙解密再把它發送給服務器。
用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網絡上傳送口令。
綜上所述,選用安全的ssh協議來登錄linux設備。驗證方式由于驗證的數控機床只支持賬號和口令的方式,所以選用第一種方式。
1.3 ssh庫選用。在本項目中引入jsch庫,jsch 是一個基于ssh的java庫,可以支持安卓設備用于ssh登錄以及文件傳輸,shell腳本操作,由于android基于java語言進行開發,所以可以以導入jar包的方式導入jsch庫。
1.4異步任務庫選用。
此外,還有一個很重要的庫。Rx(ReactiveX,響應式編程)是一種事件驅動的基于異步數據流的編程模式,整個數據流就像一條河流,它可以被觀測(監聽),過濾,操控或者與其他數據流合并為一條新的數據流。而RxJava是.Net Rx在JVM上的實現。RxJava可以應用于大部分基于JVM的語言,如Scala,Groovy等。
Rxjava引入,用于異步任務操作,并且可以在主線程子線程中切換,因為連接,傳輸文件屬于耗時操作,不能夠在主線程中進行,rxjava還帶有錯誤處理機制,在連接錯誤的時候可以進行處理。
RxJava特點
·函數響應式編程
·異步
·事件驅動的
·基于觀察者模式
·專門的出錯處理,當使用RxJava出現錯誤時,它不會直接拋出異常,而是會執行OnError()方法;
·并發,可以很容易實現多線程
1.5建立連接。
private void initPingCNCData(final String ip, final String password, final CallbackContext callbackContext){
Observable.create(new Observable.OnSubscribe() {
@Override
public void call(Subscriber subscriber) {
//1.ping device,檢測對方ip是否能聯通
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;
//根據返回值判斷是否連接成功
if (!res) {
callbackContext.error("connectfalse");1 [2] [3]
推薦閱讀:橋梁施工監控論文投哪個期刊