| 标题 | 基于WebServer的Linux远程登录系统的设计与实现 |
| 范文 | 苏开红+肖乐 摘要:该系统设计的是一款基于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划分为配置、服务、执行、协议、日志五大模块。配置模块创建,初始化其他所有模块,其他所有模块都能通过配置模块调用其他模块,作用是降低其他模块之间的耦合度,使模块之间相互独立,弱化相互关联关系;服务模块实现网络服务,不间断的监听着端口,等待浏览器或客户端发送请求,如果有一个请求到达,马上从配置模块获得一个执行模块处理请求;执行模块继承了线程接口,以一个线程处理一个请求的原则实现处理多用户请求任务,执行模块并不真正处理响应请求,而是先判断出请求所使用的协议,在获取一个协议模块,委托给获取的协议实例对象去处理响应此次请求;日志模块是整个系统运行起来的情况记录,分级别的记录日志。 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接口拓展功能。 远程上传界面如图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. |
| 随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。