?

基于WebServer的Linux遠程登錄系統的設計與實現

2017-11-15 23:12蘇開紅肖樂
電腦知識與技術 2017年28期

蘇開紅+肖樂

摘要:該系統設計的是一款基于WebServer的Linux遠程登錄軟件,該軟件適用于Unix內核的任何Linux系統。采用了B/S架構,使用Java和C語言作為開發語言,使用到的主要技術有:Java網絡編程、多線程、模塊化設計思想、C語言的多進程、Unix環境高級編程、偽終端編程。前臺使用到的技術有:CSS、Html5、jquery。該系統以Web的形式展現在用戶面前,使用方便快捷,用戶只需打開瀏覽器即可登錄連接,不需要安裝客戶端軟件,大大方便了用戶,節約了時間,也減去開發和維護客戶端的成本。系統還具有擴展功能和擴展協議,以適應更加復雜的需求。軟件系統擁有良好的穩定性和可靠性,是系統管理員和運維工程師與Linux服務器打交道的利器。

關鍵詞:Java;Linux;遠程登錄;WebServer

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)28-0101-04

Abstract: This is a Linux remote login system Based on WebServer, the software can be used in the Unix kernel for any Linux system. Java and C language as the development language. The main technologies used in the system are: Java network programming, multi threading, modular design, multi process of C language, Unix advanced programming environment, pseudo terminal programming. Front desk Technology: CSS, Html5, jquery.

This system used the B/S framework in the form of Web display in front of the user, users can login only need to open the browser, do not need to install client software, which greatly facilitates the user, also save time and minus the cost of developing and maintenance of the client. The system also has scalability, can extend the function, but also can expand the protocol to adapt to more complex needs. The software system has good stability and reliability. It is a tool to deal with the Linux server personnel, whether it is a system administrator or maintenance engineer.

Key words: java; linux; remote login; WebServer

1 背景

在工作、生活當中,總有一批人與服務器打交道,他們或是系統管理員,或是運維工程師,又或是程序員。而與服務器打交道不可避免的事情就是遠程登錄。遠程登錄,就是以當前計算機連接登錄遠在他方的計算機(可以是局域網中的某臺計算機,也可以是因特網上的計算機),從而可在當前計算機操作遠方的計算機,比如人們熟知的Telnet,SSH等,這些傳統的C/S架構的系統,使用起來雖然很簡單方便,但是往往在使用之前需要安裝一個客戶端軟件,客戶端軟件又受操作系統影響,不同的操作系統需要安裝不同的客戶端軟件。這些問題不僅降低了用戶的體驗,還增加了開發、維護客戶端的成本。而如今是WEB的天下,如果遠程登錄使用B/S架構的WEB來實現,還是比較有意義的。對系統而言:減去開發、維護客戶端的成本。對用戶而言,更加方便與簡單,以及可定制的用戶界面。

本文介紹了如何開發基于WebServer的Linux遠程登錄系統。該軟件服務器端WebServer部分使用java開發,底層使用C語言開發,使得Linux遠程登錄方式以WEB形式展現給用戶,系統還靈活運用了模塊化編程思想,使得系統具備良好的擴展性以及靈活性,只要使用者愿意,不僅可以遠程登錄,可對系統進行擴展,比如遠程控制,遠程教育等,當然,系統不僅對功能可以擴展,還可以對服務本身進行擴展。

2 系統設計

系統主要分為兩大部分,一是WebServer,主要用來對外服務,本系統中實現了WEB服務,但是也為其他服務留下接口以便進行擴展實現。二是Linux登錄調用,該部分是Linux遠程登錄的保障,是用戶登錄,執行命令的核心。

2.1 WebServer的設計

如圖1所示,WebServer劃分為配置、服務、執行、協議、日志五大模塊。配置模塊創建,初始化其他所有模塊,其他所有模塊都能通過配置模塊調用其他模塊,作用是降低其他模塊之間的耦合度,使模塊之間相互獨立,弱化相互關聯關系;服務模塊實現網絡服務,不間斷的監聽著端口,等待瀏覽器或客戶端發送請求,如果有一個請求到達,馬上從配置模塊獲得一個執行模塊處理請求;執行模塊繼承了線程接口,以一個線程處理一個請求的原則實現處理多用戶請求任務,執行模塊并不真正處理響應請求,而是先判斷出請求所使用的協議,在獲取一個協議模塊,委托給獲取的協議實例對象去處理響應此次請求;日志模塊是整個系統運行起來的情況記錄,分級別的記錄日志。endprint

2.2 遠程登錄業務的設計

遠程登錄主要的基礎業務有登錄,命令行,文件上傳、下載和文本編輯。登錄主要用于身份驗證以及調用shell,為用戶初始化shell環境從而使用戶可以進行命令行操作;在現實問題中,登錄到遠程計算機不僅能操作命令,還需要有文件傳送的功能和編輯文本文檔的功能。如圖2所示,登錄業務是其他所有業務的基礎,當然在本系統中并不是用戶身份驗證通過才算一個完整的登錄業務,在本系統中,只要啟動了登錄業務,其他業務就能使用,用戶身份驗證通不通過除了命令行業務對其他的功能業務沒有影響,因為其他業務是獨立的,可以單獨的開啟和關閉。身份驗證放在命令行中進行,只有身份驗證成功后才能進行命令行操作。文件上傳,是指本地文件上傳到遠程主機,為了降低安全風險,用戶不能提供目的路徑,上傳的文件存放在由系統指定的位置,上傳完畢系統會返回目的位置,以便用戶使用。文件下載,是用戶從遠程主機上下載文件到本機,用戶需要提供需要下載文件的路徑。文本編輯,是用來編輯遠程主機上的文本內容,當用戶編輯完成點擊保存即可對文本的修改。

2.3 HTTP協議服務

HTTP協議只是WebServer服務協議的一種,只需要實現協議接口(interface Protocol)即可,實現思路是先解析http請求,根據請求再作出相應的響應。為了使HTTP協議服務具有處理邏輯的能力,加入Action接口,Action是業務邏輯的抽象,所有的業務邏輯可以通過實現Action接口來達到給系統添加新功能的目的。在處理復雜業務邏輯時,有可能需要區分客戶端。但由于http協議是無狀態的,并不能區分客戶端,所以引進會話(Session)概念,會話是客戶端請求服務器的一個全過程,從請求第一個頁面開始,到關閉客戶端這樣的過程算是一次會話。服務端給第一次請求的客戶端分配一個會話ID(SessionID),客戶端以后的所有請求中攜帶上SessionID,服務端根據SessionID來區分客戶端。因此需要一個全局對象來保存會話,可以稱為HTTP上下文環境。http協議服務邏輯如圖3所示:

2.4 Linux登錄服務

WebServer是對網絡服務,而遠程登錄服務實際上是此登錄服務,圖4是登錄服務的結構原理及進程安排,Java通過exec一個rls(Remote login service,即遠程登錄服務)程序并獲取它的標準輸入(stdin)、標準輸出(stdout)和標準錯誤(stderr)流,這樣就可以進程間通信,Java把用戶的指令寫入標準輸入流,再從標準輸出流中讀取命令的執行結果。在rls程序中首先打開一個偽終端主從設備對(pty主從設備對),再fork一個子進程,在子進程中調用(exec) /bin/login(linux的登錄驗證程序,用戶登錄驗證通過后會啟動shell程序)程序,并把偽終端從設備設置為login程序的控制終端,這樣以后父進程的所有操作命令或者命令的執行結果就可以通過偽終端主設備進行讀寫。

3 系統實現及關鍵技術

3.1 WebServer的實現

WebServer使用模塊化編程思想,具體分為五大模塊,他們分別是配置模塊、服務模塊、執行模塊、協議模塊和日志模塊。每個模塊定義一個接口,模塊需要的功能只要去實現了接口中對應的方法即可。為了使模塊能進行配置,需要抽象一個配置接口,其他模塊只要繼承此接口就說明,該模塊可配置。還有,有的模塊具有共同的部分,就把他們抽象出來形成新的接口。WebServer的詳細設計如圖5,圖5所展示的是一個Webserver完成的類圖以及接口與接口,類與類,類與接口之間的關系。每個模塊對應一個接口,每個接口都有一個實現類。類圖中,配置模塊得到其他模塊的實例對象;日志模塊用于日志記錄,它將日志分為五個級別,分別是debug(用于系統調試)、info(普通日志信息)、warn(警告日志)、error(錯誤日志)、fatal(跟硬件有關的錯誤);執行模塊是一個可用于多線程的模塊,它以一個線程處理一個請求方式執行;服務模塊是用于監聽端口,對外服務的模塊;協議模塊是為了處理不同協議而設定的,系統實現了HTTP協議,留下接口也是為了方便擴展。RLSModul接口是對需要初始化的抽象,實現該接口就擁有初始化功能。

3.2 HTTP協議服務

協議模塊是為處理不同協議而設定的,本系統中實現了HTTP協議,其他或自定義協議可以通過實現Protocol接口進行拓展。HTTP協議服務是完成Web服務的關鍵,其中主要做的工作是解析請求,響應請求,在設計中,為了解決HTTP協議無狀態的特點帶來的弊端,使用了會話機制,會話機制是為了使服務端對客戶端有一個記憶,分清楚哪一個請求是哪一個瀏覽器的,從而針對某個客戶端繼續上次的處理。HTTP協議服務類圖如圖6所示。

3.3 Linux系統底層調用

底層調用這一塊主要是負責調用Linux系統的登錄驗證程序,用戶身份驗證通過后再調用shell程序,shell就是用來執行Linux操作命令的程序,為了使獲取到登錄驗證程序或shell的執行結果,我們使用偽終端技術,偽終端由主從設備對組成,寫入到主設備的信息可以在從設備上讀取,反之在從設備上寫入的信息可以在主設備上讀取,他是多進程之間通信的有力手段。底層代用是用C語言實現的。

4 結束語

遠程登錄命令行界面如圖7所示,在遠程登錄系統服務端初始化登錄服務并啟動登錄驗證程序之后,服務器返回的信息是用戶名輸入提示信息,如:“user login:”字樣,待用戶鍵入用戶名,按下回車,客戶端向服務端發送用戶鍵入的命令,服務端處理之后,并將處理結果返回給瀏覽器客戶端,瀏覽器再將結果信息顯示在命令行中。本系統實現了登錄,文件上傳、下載,文本編輯的業務邏輯,如果還要添加業務邏輯,可以通過實現Action接口拓展功能。endprint

遠程上傳界面如圖8所示,有兩個輸入框,一個是目的路徑輸入框,另一個是本地文件選擇框,最后還有一個上傳按鈕。當用戶填寫好目的路徑,選擇好需要上傳的文件,點擊上傳按鈕式,瀏覽器將信息發送給服務端。服務端接收完成后,返回成功字樣。

本系統使用Java開發網絡服務部分,C語言開發底層調用,組合開發達到最佳效果。網絡服務部分使用Java網絡編程-套接字編程(Socket和ServerSocket);使用Java多線程(Thread和Runnable)處理多請求任務;使用Java Runtime類完成C程序的代用,C 語言完成系統登錄的底層實現,Unix環境偽終端編程,多進程,終端IO操作。在WebServer實現上可以參考已存在的WEB服務器(Tomcat)原理,加以簡單的實現(實現HTTP協議為主),但是留下協議接口,以便擴展需要。在Web前臺使用html5,css3以及JQuery。Html用作顯示內容,css提供樣式,JQuery負責向服務器請求數據,并改變網頁顯示內容。

比起傳統的遠程登錄,這種基于WebServer的遠程登錄系統更加優秀,不管是使用上面還是設計上面,都全面超越了傳統的遠程登錄方式。

參考文獻:

[1] Cay S Horstmann. Java核心技術:卷Ⅰ,卷Ⅱ[M]. 北京: 機械工業出版社, 2014.

[2] 孫衛琴. Java面向對象編程[M]. 北京: 電子工業出版社, 2006.

[3] 孫衛琴, 李洪成. Tomcat 與 Java Web 開發技術詳解[M].2版.北京: 電子工業出版社, 2009.

[4] Elliotte Rusty Harold.Java網絡編程[M].4版.北京: 中國電力出版社,2014.

[5] 方騰飛, 魏鵬, 程曉明. Java并發編程的藝術[M]. 北京: 機械工業出版社,2015.

[6] Bruce Eckel. Java編程思想[M].4版.北京: 機械工業出版社, 2007.

[7] 孫鑫. Servlet/JSP深入詳解—基于Tomcat的Web開發[M]. 北京: 電子工業出版社, 2008.

[8] Matt Welsh,Lar Kaufman. Linux權威指南[M]. 北京: 中國電力出版社, 2000.

[9] DanielP Bovet. 深入理解LINUX內核[M]. 北京: 中國電力出版社, 2008.

[10] D.坦思. LINUX與UNIX Shell編程指南[M]. 北京: 機械工業出版社, 2000.

[11] Gary Wrigh, W Richard Stevens. TCP/IP詳解[M]. 北京: 機械工業出版社, 2000.endprint

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合