一种远程管理Linux系统工具的设计与实现
摘 要
现在,Linux已经是应用比较广泛的操作系统之一,在其系统中有很多的服务。为了实现远程配置和管理Linux中的各种服务,需要有一种远程管理Linux系统的工具软件,Webmin就是一种较好的B/S模式软件,而该课题以C/S模式实现。该工具主要功能实现对Linux系统用户和组的添加、修改和删除;对系统应用服务(如:DNS、FTP、Apache、系统启动服务管理)进行管理和配置,这些服务的远程配置主要是通过修改服务配置文本文件来实现的。该远程管理工具选用C/S模式设计,在客户端,采用GTK编程来实现操作界面;在服务器端,选用Linux系统的文件调用函数来读写配置文件中的数据;采用Sock TCP编程来实现客户端和服务端之间的数据通信。通过系统测试后,完成预期的目标,但是需要进一步完善程序和考虑安全性后,方可应用于实际的远程管理。
关键词:Linux;系统服务;C/C++;GTK;系统调用;Socket
The Design and Implementation of a Remote Management Tool for Linux
Abstract/
The operating system of Linux has become one of the most popular operating systems nowadays. It provides many kinds of service. In order to configure and manage the service remotely, the tool of remote management of the operating system of Linux is needed. Webmin is a good tool of software based on the model of B/S. This design is implemented based on the model of C/S. The main functions of the system include addition, modification, deletion of users and groups of Linux operating system and configuration and management of the service of application of the system, such as the DNS, FTP, Apache and the management of booting service. The remote management of service is implemented by modifying the files of configuration. The model of C/S is selected by this system. In the Client, the operating interface is made by the programming of GTK. In the Server, the functions of transferring of files of Linux operating system are used to write and read the data of the configuration files. The communication of Client and Server is implemented by the programming of Sock TCP. The testing demonstrates that the system has reached the prospective goal. But lots of improvements should be made and the problems of security should be considered more. After being modified and perfected, the system can be used to manage the system remotely.
Key words: Linux;System Servers;C/C++;GTK;System Call;Socket
目 录/
论文总页数:33页
1引言1
1.1课题背景1
1.2国内外研究现状1
1.3本课题研究的意义1
1.4本课题的研究方法1
2GTK编程1
2.1GTK简介1/2.2常用的GTK构件3
3LINUX系统调用6
3.1LINUX系统文件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.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编程来实现服务器和客户端的通信,传递配置内容和服务指令。
2GTK编程/
2.1GTK简介
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()函数中一直等待,直到某个事件的发生或控制权被交给相应的函数。/
(1)信号
控制权的传递是使用“信号”的方法。一旦事件发生,比如鼠标器按钮被按下,被按下的构件(按钮)将引发适当的信号。有一些信号是大多数构件都具备的,比如destory,还有一些是某些构件专有的,比如在按扭的toggled信号。要让一个按钮执行一个操作,我们需要写一段信号处理程序,以捕获它的信号,然后调用相应的回调函数。
这由类似以下所示的函数实现:
Gint gtk_signal_connect(GtkObject *object,
Gchar *name,
GtkSignalFunc func,
gpointer func_data );
上面函数的第3个参数为回调函数,它的形式通常是:
void callback_func( GtkWidget *widget, gpointer callback_data );
(2)事件/
除了上面的信号机制外,还有一些和X事件机制相对应的事件。回调函数也可以和这些事件连接起来应用。将回调函数连接到X的某一个事件,需要使用gtk_signal_connect函数,并使用事件名称作为命名参数。事件的回调函数与信号的回调函数在形式上略有不同:
Void func(GtkWidget *widget,/
GdkEvent *event,