一种远程管理Linux系统工具的设计与实现
摘 要
现在,Linux已经是应用比较广泛的操作系统之一,在其系统中有很多的服务。为了实现远程配置和管理Linux中的各种服务,需要有一种远程管理Linux系统的工具软件,Webmin就是一种较好的B/S模式软件,而该课题以C/S模式实现。该工具主要功能实现对Linux系统用户和组的添加、修改和删除;对系统应用服务(如:DNS、FTP、Apache、系统启动服务管理)进行管理和配置,这些服务的远程配置主要是通过修改服务配置文本文件来实现的。该远程管理工具选用C/S模式设计,在客户端,采用GTK编程来实现操作界面;在服务器端,选用Linux系统的文件调用函数来读写配置文件中的数据;采用Sock TCP编程来实现客户端和服务端之间的数据通信。通过系统测试后,完成预期的目标,但是需要进一步完善程序和考虑安全性后,方可应用于实际的远程管理。
关键词:Linux;系统服务;C/C++;GTK;系统调用;Socket
目 录
1 引言 1
1.1 课题背景 1
1.2 国内外研究现状 1
1.3 本课题研究的意义 1
1.4 本课题的研究方法 1
2 GTK编程 1
2.1 GTK简介 1
2.2 常用的GTK构件 3
3 LINUX系统调用 6
3.1 LINUX系统文件 6
3.2 如何从文件中读取数据 6
3.3 进程和线程的使用 7
4 基本的套接口编程 7
4.1 概述 7
4.2 简单的网络编程 8
5 程序设计和流程图 10
5.1 设计思路 10
5.2 服务程序 10
5.2.1 流程设计 10
5.2.2 功能模块 11
5.3 客户程序 20
5.3.1 设计思路 20
5.3.2 程序设计 20
6 系统测试 30
结 论 31
参考文献 31
致 谢 32
声 明 33
1.1 课题背景
Linux是目前应用最广泛的操作系统之一,基于Linux系统的网络服务软件(如FTP、Apache、DNS、SendMail)的功能也很强大。但是现在能够统一对这些服务进行管理的软件却很少的。本课题为减轻系统管理员的工作量而提供了一些简单的系统服务的管理和查看工具。
1.2 国内外研究现状
Linux是现在开源项目的代表,很多大的硬件厂商也在支持Linux的发展。而且Linux平台上的服务软件也是越来越多了。现在Linux已经进入到企业级应用,Webmin是一种基于B/S模式的远程管理Linux系统的软件工具。
1.3 本课题研究的意义
本课题是为了给系统管理员提供一种远程管理Linux中某些主要服务的工具软件,完成服务配置管理和查看一些重要的数据。由于Linux是开源项目的代表,对Linux的学习有助于对计算机系统和软件理论知识的提高。通过该课题的设计和实现,既解决远程管理Linux系统,又让自己掌握了一些Linux系统编程和Sock编程能力。
1.4 本课题的研究方法
本课题主要是对网络配置、GTK库、Linux系统调用和网络编程方面的研究。采用C/S模式,在客户端采用GTK函数实现用户界面的编写,在服务器端通过Linux的系统调用,来实现本地服务配置,然后再通过Sock编程来实现服务器和客户端的通信,传递配置内容和服务指令。
2 GTK编程
2.1 GTK简介
GTK(GIMP Toolkit,GIMP工具包)是一个用于创造图形用户接口的多平台工具。它包含有基本的空间和一些很复杂的控件:例如文件选择控件。GTK最初是GIMP(GNU图形处理程序)开发的控件集合,然后它不断扩展,直到今天被用于大量的应用程序当中。
从根本上来说,主循环是由glib实现的。Gtk将glib主循环连接到Gdk的X服务器,并提供一个方便的接口。
Gtk分别用gtk_main()函数和gtk_main_quit()函数来运行主循环和退出主循环,当系统调用了gtk_main()函数后,由于gtk_main()函数可以递归调用,所以需要调用gtk_main_quit()函数才能退出gtk。
gtk_main()函数的所有功能都是监视Gtk程序和与X服务的连接,对同样的时间队列起作用。gtk_main()函数用于阻塞该进程直到满足某些条件。所有的Gtk程序都用这个技巧使应用程序正在运行时main()函数被阻塞,直到用户通过点击鼠标或键盘来产生一个信号,并通过该信号来调用相应的回调函数。
GTK是一个时间驱动工具包,它将在gtk_main()函数中一直等待,直到某个事件的发生或控制权被交给相应的函数。