基于Linux的远程管理系统服务器端的实现
摘要
该课题基于Linux操作系统,主要目的是使系统管理员的远程管理工作更加方便、简单和友好。实现的主要功能有文件操作、命令操作、系统操作、进程操作和网络操作,这些基本上涵盖了系统管理的各个方面。在设计上,采用了B/S结构,使得该系统可以方便的进行升级和方便用户从各种平台上对服务器进行访问;采用了安全访问技术,使得访问和管理更加安全;采用了简单和美观的界面显示技术,使得用户的浏览快捷和舒适。
该课题开发的系统需要安装运行在Linux系统的上,系统管理员可以在远程利用浏览器进行登录,通过验证后就可以方便的对系统的运行状态进行查看,对系统进行管理,对网络进行配置,对数据进行分析,要注意的是登录到本系统必须用远程服务器的root权限和密码,而且为了保证系统的安全,防止出现意外事件,管理员只能操作特定的任务。该课题的主要意义在于可以运用PHP进行系统管理,开发的系统可以使系统管理员方便的管理远程系统。
关键词:远程管理;B/S结构;安全访问;Linux;PHP
1引言
1.1 课题背景
远程管理是在网络上由一台电脑(主控端Remote/客户端)远距离去控制另一台电脑(被控端Host/服务器端)的技术,这里的远程不是字面意思的远距离,一般指通过网络控制远端电脑,不过大多数时候我们所说的远程控制往往指在局域网中的远程控制而言。当操作者使用主控端电脑控制被控端电脑时,就如同坐在被控端电脑的屏幕前一样,可以启动被控端电脑的应用程序,可以使用被控端电脑的文件资料,甚至可以利用被控端电脑的外部打印设备(打印机) 和通信设备(调制解调器或者专线等)来进行打印和访问互联网,就像你利用遥控器遥控电视的音量、变换频道或者开关电视机一样。不过,有一个概念需要明确, 那就是主控端电脑只是将键盘和鼠标的指令传送给远程电脑,同时将被控端电脑的屏幕画面通过通信线路回传过来。也就是说,我们控制被控端电脑进行操作似乎是 在眼前的电脑上进行的,实质是在远程的电脑中实现的,不论打开文件,还是上网浏览、下载等都是存储在远程的被控端电脑中的。
对于刚刚接触Linux的系统管理员来说,正确高效地完成各种关键的系统配置简直是一件不可能的任务。即使是一个很有经验的Linux的管理员,也常常会为某些复杂的配置文件的格式而苦恼。因此拥有一个Linux上的GUI管理工具一直是广大Unix爱好者的美好愿望。虽然Linux自带有SSH字符界面远程管理工具,但对于SSH不断升级所带来的困难和图形界面友好、B/S结构的易用,还是略显笨拙和枯燥,Web管理方式使得本软件同时具有本地和远程管理的能力,访问控制和SSL支持为远程管理提供了足够的安全性。所以我们编写本软件以更好、更容易的管理远程Linux系统,从而减少系统管理员的负担。
1.2 国内外研究现状
从文献和网络资源来看,国外有过类似的软件,比如Webmin、PHPWebmin。
而这些软件都是英文,几乎没有中文版本,许多国内系统管理员不太习惯,况且有些软件是用Perl语言来写的,在效率和使用广度上有写不太满意。
1.3 本课题研究的意义
对于系统管理员来说,管理整个系统是十分复杂和烦躁的工作,尤其服务器的远程管理,对系统管理人员来说是十分重要的。本软件的开发就是为了方便系统管理员对本地和远程安装了Linux系统的服务器进行管理,增加管理的方便性,利用B/S结构也从另外一方面减少了管理员的劳动量。管理员利用浏览器在远程登录后,可以方便的对服务器进行运行状态的查看,对网络服务进行配置,对一些数据进行分析,而且可以对异常现象做出快速的反应。
从 Windows 环境的管理转到 Linux 环境的管理时所面临的挑战之一是,您需要学习利用新的工具。作为一个管理员,您希望理解操作系统的细节以发挥它的最大功效。但是,当您还处在学习阶段时,就需要去完成具体的工作。为加速您驾驭 Linux 的进度,我们安装一个这样的远程管理程序,对于系统管理员来说是十分方便的。
1.4 本课题的研究方法
本系统的开发要求采用B/S结构,模拟Webmin进行设计与开发。因此,本次毕业设计应首先分析Webmin的相关功能,结合本次毕业设计的相关要求写出需求分析;其次,综合运用以前所学的相关知识选择所熟悉的开发工具进行本毕业设计的开发;在设计中以需求分析为基础,写出系统开发计划、实现流程及相关问题的实现方法;同时,在开发设计与实现中,要保存好相关的设计文挡,为后面的毕业论文的写作准备材料;最后,系统开发完毕后,进行调试和试运行,做好调试和试运行的相关记录,也为后面的毕业论文的写作准备材料。
主要的方法有:首先只写文件操作部分以了解该系统的工作方式及系统的大致面貌,然后逐步增加其他的功能与模块,最后对整个系统进行修饰整理,从而完该系统。
2需求分析
2.1任务概述
1.能够安全的登录远程主机,并在管理过程中进行安全的交互。
2.能够对远程主机的文件系统进行管理,可以对文件或者文件夹进行查看、
创建、删除、移动、上传等操作。
3.能够发送命令到远程主机以进行解释和运行并把运行的结果发送回来。4.能够对远程主机的正在运行的进程进行查看和管理。
5.能够对远程主机系统进行管理,可以查看系统信息、关机或重启、修改
密码、管理用户和组、管理软件包等。
6.能够对远程主机的网络服务进行管理,可以进行管理Apache服务器,管
理DNS服务器,管理MySQL服务器,管理SSH服务器 管理DHCP
服务器,查看网络参数,配置网络参数等操作。
7.使得远程管理更加人性化、更加简单、更加方便、更加友好。
8.要使得该软件容易升级和修改、扩展,容易被使用。
开发工具
开发语言主要使用PHP、HTML, 在PHP不能解决的地方使用SHELL或C。
开发环境
操作系统:Fedora core 5
PHP引擎:PHP 5.1
Web服务器:APACHE2
浏览器:Mozilla firefox 2.0
开发人员
孙泽玺,主要负责服务器端的开发。
徐斌,主要负责客户端的开发。
运行环境
该软件运行在安装有Linux操作系统、Apache服务器的远程主机上。运行之前需要开启Apache服务器,并进行一些设置。
条件限制
本系统登录必须以远程服务器的root权限和密码登录,而且为了保证系统的安全,防止出现以外事件,管理员只能操作特定的任务。如果该系统安装在其他的操作系统中,例如windows操作系统,那么会用某些模块不能运行或者不能正确运行。
2.2功能分析
根据该课题的要求与目标,可以了解到该系统主要有以下功能:
1、安全访问
安全访问是指登录时要利用HTTPS协议、SSL套节字登录到远程主机,不能被黑客或者恶意攻击者探测到登录的用户名和密码,并且在管理过程中也要采取安全访问的技术,以防止重要数据的丢失、截取或者被攻击。
2、文件操作
文件操作主要是对文件系统进行管理,主要包括查看文件或目录信息,新建文件或目录,删除文件或目录,复制文件或目录,运行文件,上传文件,下载文件等等。
3、命令操作
命令操作就是在远程主机把命令发送过去,服务器对各种SHELL命令的解释与执行,并且把执行后的结果再发送到远程主机显示出来。
4、进程操作
进程操作就是对远程主机的正在运行的进程进行管理,主要包括查看或终止正在运行的进程,查看开启的服务列表(端口号)、对开启服务进行管理、 查看当前系统所有正在运行的进程并且可以对进程进行相关操作。
5、系统操作
系统操作就是对远程主机的Linux系统进行的系统方面的管理,主要包括关机或重启,修改密码,查看系统信息,管理用户和组,管理软件包。
6、网络操作
网络操作就是对远程主机的网络服务进行的管理,主要包括管理Apache服务器,管理DNS服务器,管理MySQL服务器,管理SSH服务器, 管理DHCP服务器,查看网络参数,配置网络参数。
2.3工作流程
根据对该系统的设计目标和要求,可以确定从总体上,该系统的工作流程分为三大部分:认证过程、管理过程、注销过程。
整个系统的工作流程如图1:
图1 工作流程
1、认证过程
管理员端通过浏览器登录此远程管理系统,输入此系统用户名与密码,如果用户名或密码错误则显示错误信息,并提示重新输入;正确则进入此管理系统,获得一定权限,管理系统服务。该认证过程要在安全的情况下进行,不能以明文进行传输。
2、管理过程
当用户正确进入系统后,即可进行系统管理,点击某管理模块,设置某项服务,系统通过网络发送命令到Web服务器,与服务器获得交互,服务器通过PHP引擎解析获得命令,调用相应脚本并执行,获得结果返回到远程主机的浏览器。
3、注销过程
管理员完成远程主机更新或管理后,可点击注销以退出本远程管理系统,系统发送注销命令到服务器,服务器使所登录用户失去管理权限,切断用户与服务器连接,返回到管理系统登录页面。
2.4性能分析
根据该课题的要求与目标、现在的技术状况,可以确定该系统在性能方面要达
到以下目标:
1.该系统能够处理多个用户同时连接到服务器的情况而不出什么问题(比如100个)。
2.该系统能够及时地返回执行的结果,并且当命令不能正确执行时,能够进行提示。
3.该系统要在页面非正常情况下关闭时,能够正确的识别,并自动的断开与远程客户机的连接。
4.该系统要有防止访问单独文件的情况,不管要访问什么样的文件都必须通过主页面。
5.对于在系统执行过程中出现的异常,程序能够正确的识别并显示相关的信息进行提示。
6.该程序要防止不正确或者非法命令的执行,防止在程序运行过程中,因为执行了某个命令而导致整个系统的崩溃或者连接的断开或者远程服务器的死机。
3总体设计
3.1系统架构
因为该系统采用B/S模式并且进行远程管理,所以整个系统可以分为五大模块,即客户端、Internet、Linux操作系统、Apache服务器、PHP解释器。
客户端是浏览器,客户可以在远程利用浏览器登录服务器进行管理远程Linux系统。
Internet是连接服务器和客户端的媒介,用来传输命令和数据。
Linux操作系统运行在远程服务器上,管理整个系统,开发的程序也是运行在Linux操作系统上。
Apache服务器是web服务器用来传输web页面,并调用PHP引擎对PHP脚本进行解释和执行,并把结果传输到远程浏览器。
PHP解释器是用来对PHP脚本进行解释执行的,PHP解释器根据Apache的不同调用参数对不同的脚本进行解释,并把执行后得到的html文件返回给Apache服务器。
该系统的框架可以用图2表示:
图2 系统架构
3.2模块划分
根据前面的需求分析和系统架构可知,该系统可以划分为六大模块如图3。
图3 系统模块
- 安全访问模块
主要负责客户端对服务器端的安全访问,主要采用访问控制技术和加密技术。在服务器端的文件系统内采用访问控制技术,在服务器端和客户端的传输过程中采用加密技术。
- 文件操作模块
主要负责对远程Linux操作系统的文件系统进行操作,这是操作远程主机的基础。当首次进行文件操作时,界面显示该系统脚本文件所在的目录和文件的属性,并在其后显示可以进行操作的命令按钮,并且在界面的上方有转换目录的文本框和命令。主要利用PHP的cookie传递命令,在具体操作方面主要利用PHP的文件IO函数来实现,在显示方面,编写了一个格式类,可以调用该类的相应函数来格式或者显示数据。
- 命令操作模块
主要负责对客户端传送过来的SHELL命令进行解释和执行,并及时地把结果返回过去,做这一模块时,一定要注意结果返回的及时性和错误命令的正确提示。主要利用HTML的POST方法把命令传输到服务器,然后利用PHP的系统函数system、exec、passthru的函数来执行相应的命令并把执行的结果传输到浏览器。
- 进程操作模块
主要负责对远程Linux操作系统的进程进行显示,并能对每个进程进行操作,例如杀死某个进程。主要利用system函数执行SHELL命令ps和grep得到进程列表,并在浏览器端用表格显示出来,利用posix_kill函数把某个进程杀死。
- 系统操作模块
主要负责对Linux的主要系统管理的操作,可以利用这些系统操作对远程Linux系统进行简单的系统管理。总体思路为,利用PHP的_POST数组得到相应的传输过来的命令,然后利用PHP的system函数执行相应的SHELL命令,并把结果传输到服务器。
- 网络操作模块
主要对远程Linux系统的网络进行简单的管理和配置。实现的总体思路为,在服务器端修改某些跟网络管理相关的文件的访问权限以使Apache可以访问和修改这些文件,利用PHP的_POST数组得到相应的传输过来的网络操作命令,然后利用PHP的system函数执行相应的SHELL命令,并把结果传输到服务器。
4具体实现
4.1安全访问模块
安全访问主要通过本机访问控制文件和PHP脚本身份验证来进行实现。
1、主机访问控制文件
在远程主机中,要开启apache服务器,并在apache的配置文件中添加要访问的目录的访问控制选项。之后在要访问的目录中建立访问控制文件.htaccess和.remoteadminpasswd。.htaccess文件定义了用户名和密码文件的路径和其他一些控制选项。.remoteadminpasswd文件有用户名和加密的密码。
Apache的配置是为了实现目录保护和基本验证,但为了提高用户的权限,还需要对服务器进行一些配置。
- 查看httpd.conf文件找到User字段,查看Apache启动用户(默认为apache);
- 编辑/etc/passwd文件,找到apache用户行,修改其shell(默认为/bin/nologin或/bin/false)为/bin/bash;
- 编辑/etc/sudoers文件,在文件中root ALL=(ALL)ALL字段的下一行添加apache ALL=NOPASSWORD:ALL,使得apache用户能够通过sudo命令执行所有命令。
经过此配置后,apache用户只要使用sudo命令即可获得root权限。
为了保证系统的安全性,在此对Apache Web服务器的目录执行访问控制 ,使用.htaccess访问文件和htpasswd程序为一个目录建立ACL,来对用户进行身份验证,并在.htaccess文件中设置使用SSL连接,完善安全性。
假设PHPWebmin位于/var/www/phpwebmin目录中。
1)配置httpd.Conf
用vi编辑器打开Apache配置文件httpd.Conf(默认在/etc/httpd/conf/目录下),找到<Directory "/var/www">字段,在下面的属性设置中添加或修改
AllowOverride ALL //此参数设置哪些目录使用.ltaccess进行保护;
2)为所保护目录建立ACL
进入phpwebmin目录,cd /var/www/phpwebmin,在此目录下建立隐藏文件.htaccess(必须在htaccess文件前添加一个点号,如果不这样做,就无法建立ACL,因为点号表示建立一个隐藏文件) vi .htaccess,在.htaccess文件中输入如下代码:
SSLRequireSSL //使用SSL安全连接
AuthName "PHP Webmin" //验证名称
AuthType Basic
require valid-user //允许password文件中的所有用户访问
AuthUserFile /var/www/phpwebmin/.phpwebminpasswd //身份数据文件;
3)创建用户身份验证数据库
在命令行下输入以下口令创建用户身份验证数据库文件,会要求你为用户admin创建密码:
htpasswd -c /var/www/phpwebmin/.phpwebminpasswd admin
New password:
Re-type new password:
建立后的.phpweminpasswd文件内容类似于:
admin:Op96DPmXTKy5w //用户名:MD5加密后的密码
若系统没有安装htpasswd,也可在网上生成用户名密码后放入.phpwebminpasswd文件.
这样,就已经为Apache服务器建立了一个用户账号数据库,并对phpwebmin目录实行了目录保护,并实现了用户基本验证,需要用安全连接https://localhost/phpwebmin/ 进行访问,访问过程中会弹出验证对话框。
2、PHP脚本的身份验证
利用_GET数组判断是登录还是注销,如果是登录,则验证密码是否正确,如果正确则进入管理界面,并在客户端设置cookie以记录登录信息,否则提示相应的错误信息。验证流程如图4:
图4 身份验证流程
身份验证的主要代码如下:
if ($_GET['action'] == "logout")
{
setcookie("adminpass", "");
echo"<meta http-equiv=\"refresh\" ontent=\"3;URL=".$self."\">";
echo "<span style=\"font-size: 12px; font-family: Verdana\">注
销成功......<p><a href=\"".$self."\">三秒后自动退出或单击这里退出程序界面 >>></a></span>";
ob_end_flush();
exit;
}
if ($_POST['do'] == 'login')
{
$thepass=trim($_POST['adminpass']);
if($admin['pass'] == $thepass)
{
setcookie("adminpass", $thepass, time() + (1 * 24 * 3600));
echo "<meta http-equiv=
\"refresh\" content=\"3;URL=".$url."\">";
echo "<span style=\"font-size: 12px; font-family: Verdana\">登录成功......<p><a href=\"".$url."\">三秒后自动跳转或单击这里进入程序界面 >>></a></span>";
exit;
}
else
{
echo "密码错误,请重新输入</br>";
}
}
if(isset($_COOKIE['adminpass']))
{
if ($_COOKIE['adminpass'] != $admin['pass'])
{
loginpage();
}
else
{
loginpage();
}
}
4.2文件操作模块
文件操作有很多类型的操作,主要包括查看文件或目录信息,新建文件或目录,删除文件或目录,复制文件或目录,运行文件,上传文件,下载文件。
文件的操作和在本地操作文件一样,只是形式有所不同,当用户选择了一个或部分文件之后,就可以点击相应的命令按钮,从而产生相应的动作。主要利用PHP的cookie传递命令,在具体操作方面主要利用PHP的文件IO函数来实现,在显示方面,编写了一个格式类,可以调用该类的相应函数来格式或者显示数据。
文件操作流程如图5:
图5 文件操作流程
编辑文件和文件改名的主要代码如下:
// 编辑文件
if ($_POST['do'] == 'doeditfile')
{
if (!empty($_POST['editfilename']))
{
$filename="$editfilename";
@$fp=fopen("$filename","w");
echo $msg=@fwrite($fp,$_POST['filecontent']) ?
"写入文件成功!" : "写入失败!";
@fclose($fp);
}
else
{
echo "请输入想要编辑的文件名!";
}
}
// 编辑文件属性
elseif ($_POST['do'] == 'editfileperm')
{
if (!empty($_POST['fileperm']))
{
$fileperm=base_convert($_POST['fileperm'],8,10);
echo (@chmod($dir."/".$file,$fileperm)) ? "属性修改成功!" : "修改失败!";
echo "文件 ".$file." 修改后的属性为: ".substr(base_convert(@fileperms($dir."/".$file),10,8),
-4);
}
else
{
echo "请输入想要设置的属性!";
}
}
4.3命令操作模块
命令操作即是对各种SHELL命令的解释与执行,这主要是通过php的system、passthru等函数来执行。可在此模块中进行进程操作和系统操作等等,注意使用的是Web模式,无法执行交互式Shell命令。在设计中,使用一个表单获得commond变量,提交给system函数后执行system(“sudo $commond”),并返回结果。
命令操作流程如图6
图6 命令操作流程
部分代码如下:
if (!empty($_POST['command']))
{
if ($execfunc=="system")
{
system("sudo ".$_POST['command']);
}
elseif ($execfunc=="passthru")
{
passthru("sudo ".$_POST['command']);
}
elseif ($execfunc=="exec")
{
$result = exec("sudo ".$_POST['command']);
echo $result;
}
elseif ($execfunc=="shell_exec")
{
$result=shell_exec("sudo ".$_POST['command']);
echo $result;
}
elseif ($execfunc=="popen")
{
$pp = popen("sudo ".$_POST['command'], 'r');
$read = fread($pp, 2096);
echo $read;
pclose($pp);
}
elseif ($execfunc=="wscript")
{
$wsh = new COM('W'.'Scr'.'ip'.'t.she'.'ll') or
die("PHP Create COM WSHSHELL failed");
$exec = $wsh->exec
("cm"."d.e"."xe /c "."sudo ".$_POST['command']."");
$stdout = $exec->StdOut();
$stroutput = $stdout->ReadAll();
echo $stroutput;
}
else
{
system("sudo ".$_POST['command']);
}
}
4.4进程操作模块
进程操作主要包括查看或终止正在运行的进程,查看开启的服务列表、对开启服务进行管理、查看当前系统所有正在运行的进程并且可以对进程进行相关操作。这主要通过执行ps –aux来获取进程列表,再用表格来表示出来,并且可以kill掉每一个进程。
进程操作流程如图7:
图7 进程操作流程
主要代码如下:
if ($_GET['action'] == "process")
{
if(!$win) {$handler = "ps -aux".($grep?"
| grep '".addslashes($grep)."'":"");}
else {$handler = "tasklist";}
$ret = myshellexec($handler);
if(!$ret) {echo "Can't execute \"".$handler."\"!";}
else
{
if(empty($processes_sort))
{$processes_sort = $sort_default;}
$parsesort = parsesort($processes_sort);
if (!is_numeric($parsesort[0])) {$parsesort[0] = 0;}
$k = $parsesort[0];
if($parsesort[1] != "a")
{
$y="<a href=\"".$surl."action=".$dspact."&d=".
urlencode($d)."&processes_sort=".$k."a\">
<img src=\"".$surl."action=img&img=
sort_desc\"height=\"9\"width=\"14\" order=\"0\"></a>";
}
else
{
$y="<a href=\"".$surl."action=".$dspact."&d=".
urlencode($d)."&processes_sort=".$k."d\">
<img src=\"".$surl."action=img&img=
sort_asc\"height=\"9\" width=\"14\" border=\"0\"></a>";
}
$ret = htmlspecialchars($ret);
if (!$win)
{
if ($pid)
{
if (is_null($sig)) {$sig = 9;}
echo "Sending signal ".$sig." to #".$pid."... ";
if (posix_kill($pid,$sig)) {echo "OK.";}
else {echo "ERROR.";}
}
}
}
}
4.5系统操作模块
系统操作主要包括关机或重启,修改密码,查看系统信息,管理用户和
组,管理软件包。这主要通过更改Apache的权限和执行命令的SHELL,并把
Apache添加到sudoers文件里面成为可以执行sudo命令的一员。
关机和重启,可通过管理员点击Shutdown、Reboot按钮,从而调用system函数执行内置的关机、重启命令,也可在表单中输入其他关机或重启命令并运行。
查看系统信息,通过switch判断提交的命令,并调用system函数执行内置命令如uname–a、fdisk –l等,包括查看CPU信息、查看分区信息、查看内核。
管理用户和组,可以查看系统拥有用户和组,并通过简单的表单提交,进行添加、删除用户或组的操作。
系统操作流程如图8:
图8 系统操作流程
查看系统信息和管理用户及组的主要代码如下:
//查看系统信息
switch($_POST['info'])
{
case "CPU Info":
$exec="sudo cat /proc/cpuinfo";break;
case "Disk Info":
$exec="sudo fdisk -l";break;
case "Kernel Version":
$exec="sudo uname -a";
}
if($exec) { system($exec);}
//管理用户和组
$commond="sudo groupdel ".$_POST['group'];
echo $commond;
if($commond) { system($commond); }
$commond="sudo groupadd ".$_POST['group'];
echo $commond;
if($commond) { system($commond); }
switch($_POST['passmode'])
{
case 0:
$passwd="";break;
case 1:
$passwd=" -p ".$_POST['encpass'];
}
if(!$_POST['home'])
{
$home=" -d ".$_POST['home'];
}
$user=$_POST['user'];
$uid=" -u ".$_POST['uid'];
$shell=" -s ".$_POST['shell'];
$commond="sudo useradd ".$_POST['user']." -d ".$_POST['home']." -s ".$_POST['shell']." -u ".$_POST['uid']." -p ".$_POST['encpass'];
echo $commond;
if($commond) { system($commond); }
$commond="sudo userdel ".$_POST['user'];
echo $commond;
if($commond) { system($commond); }
4.6网络操作模块
网络操作主要包括管理Apache服务器,管理PHP服务器,管理MySQL服务器,管理SSH服务器,管理DHCP服务器,查看网络参数,配置网络参数。
查看网络参数主要包括查看网络连接状况、路由表、网卡接口信息、网络统计数据、arp暂存信息、基本网络配置参数。
配置网络参数主要包括配置基本网络参数、添加和删除路由。
管理PHP服务器重要包括查看PHP环境变量、PHP信息、配置PHP。
管理Apache服务器主要包括停止服务器和配置服务器。
管理MySQL服务器主要包括数据库查询和备份,服务器的启动、停止和重启。
管理SSH服务器主要包括该服务器的启动、停止和重启。
管理DHCP服务器主要包括该服务器的启动、停止和重启。
进程操作流程如图9:
图9 网络操作流程
配置网络参数的主要代码如下:
switch($_POST['config'])
{
case ConfigIP:
$exec="ifconfig eth0 ".$ip." netmask ".$mask." up";
$exec1="route add default gw ".$gw;
$flag=1;break;
case ConfigDNS:
$dns=1;break;
case AddHostRoute:
$exec="route add -host ".$host." gw ".$rgw;break;
case AddNetRoute:
$exec="route add -net ".$netroute." netmask ".
$nmask." gw ".$nrgw; break;
case DelHostRoute:
$exec="route del -host ".$dhost." gw ".$drgw;break;
case DelNetRoute:
$exec="route del -net ".$dnetroute." netmask ".$dnmask."
gw ".$dnrgw; break;
}
if($exec)
{
system("sudo $exec",&$ret);
if(!$ret)
echo "Changed successfully\n";
else
echo "Changed unsuccessfully\n";
}
if($flag)
{
system("sudo $exec1",&$ret1);
$flag=0;
if(!$ret1)
echo "Getway Changed successfully\n";
else
echo "Getway Changed unsuccessfully\n";
}
if($dns)
{
$fd=fopen("/etc/resolv.conf", "w+");
if ($fd)
{
if($dns1)
fwrite($fd, "nameserver $dns1\n");
if($dns2)
fwrite($fd, "nameserver $dns2\n");
if($dns3)
fwrite($fd, "nameserver $dns3\n");
}
else
echo "open file error!\n";
$dns=0;
if(!$dns1 && !$dns2 && !$dns3)
echo "DNS has not changed!";
else
echo "DNS has changed!";
fclose($fd);
5系统测试
5.1安全访问模块
当用户在远程主机登录时,会出现下图让用户输入用户名和密码。之后还会出现PHP的验证页面,需要再一次输入另外的密码。当用户点击注销按钮后,用户就会失去管理的页面,又会回到PHP的身份验证页面,当用户需要再一次登录远程服务器进行管理时,可以输入密码登录进行管理。安全访问模块运行良好。
登录界面如图10:
图10 登录
5.2文件操作模块
当用户登录到远程服务器进入文件操作模块后,就可以对服务器的文件系统进行操作。经过测试,可以正常的下载文件、显示文件和目录等,但在编辑和上传文件时需要在服务器端进行一些权限的设置。
文件操作界面如图11:
图11 文件操作
5.3命令操作模块
当用户登录到远程服务器进入命令操作模块后,就可以输入命令进行各种操作。经过测试,对于非交互性的命令,该系统能够运行良好,对于交互性的命令,该系统有时不能运行,有时不能正确运行,有是经过很长时间。
5.4进程操作模块
当用户登录到远程服务器进入进程操作模块后,就可以对服务器正在运行的进程进行操作。经过测试,可以以表格的形式正确的显示正在运行的进程,并且在表格的每一项最右边有KILL按钮,当需要杀掉某一进程时,可以点击该按钮。该模块可以正常的运行。
5.5系统操作模块
当用户登录到远程服务器进入系统操作模块后,就可以对服务器进行各种
系统管理操作。经过测试,可以正常地关机或重启,修改密码,查看系统信息,管理用户和组,管理软件包。但这只是简单的系统管理,对于复杂的系统管理并没有怎么涉及到,或者只是实现的一小部分。
5.6网络操作模块
当用户登录到远程服务器进入网络操作模块后,就可以对服务器的网络参数进行查看和配置。经过测试,可以查看网络连接状况、路由表、网卡接口信息、网络统计数据、arp暂存信息、基本网络配置参数。可以配置基本网络参数、添加和删除路由。可以查看PHP环境变量、PHP信息、配置PHP。可以停止Apache服务器和配置Apache服务器。可以管理MySQL服务器包括数据库查询和备份,服务器的启动、停止和重启。可以管理SSH服务器包括该服务器的启动、停止和重启。可以管理DHCP服务器包括该服务器的启动、停止和重启。但这只是简单的实现了网络操作的一小部分,还有一些复杂的操作没有实现。
查看网络参数界面如图12:
图12 查看网络参数
结 论
通过本课题的研究,了解到B/S结构的软件的运行机制和技术,学习到软件工程的许多原理和设计过程。虽然该远程管理系统实现了文件操作、进程操作、命令操作、系统操作和网络操作,但这些还只是初步的实现,还有许多不足之处,比如权限的设置、部分网络操作的不完整和一些操作还没有实现。其他人可以根据我们的设计思路去实现。
基于web的管理Linux系统的远程管理系统是一个比较复杂的问题,但是也是很有挑战性的课题,也是很实用的课题。这样的远程管理系统可以是系统管理员节省大量的时间和工作,使得系统管理更加方便、更加容易、更加友好。
本课题的研究参照了别人成功的软件开发的设计模式与开发流程。在对本课题的研究中,使我了解到软件开发中的需求分析,概要设计、详细设计、系统编码、系统测试等每一阶段都很重要,尤其是需求分析和概要设计,这两个阶段直接关系到整个系统的质量优劣,直接影响到以后的开发,也纠正了我对软件开发的许多错误认识,比如以前我认为软件开发就是编码。
参考文献
[1] Evi Nermeth.UNIX系统管理技术手册[M].北京:人民邮电出版社,2002。
[2] Rasmus Lerdorf,Kevin Tatroe.PH程序设计[M].北京:中国电力出版社,2003。
[3] 郭金锋,林宇.PHP&MySql Web网络编程[M].北京:人民邮电出版社,2001。
[4] 宁磊,周卫.Linux网络与安全管理[M].北京:人民邮电出版社,2001。
[5] 赵启志.PHP 4+MySQL完整自学方案[M].北京中国铁道出版社,2001。
[6] 考克斯.Red Hat Linux系统管理员手册[M].北京:机械工业出版社,2001。
[7] Leon Atkinson.PHP 4核心编程[M].北京:中国水利水电出版社,2001。
[8] Tobias Ratschiller.PHP 4.0 Web开发技术指南[M].北京:机械工业出版社,2001。
致 谢
本文是在方睿老师的热情关心和指导下完成的,他渊博的知识和严谨的治学作风使我受益匪浅,对顺利完成本课题起到了极大的作用。在此向他表示我最衷心的感谢!
感谢网络在课题研究初期给予的帮助,在网络的帮助下课题才得以很好的展开,有了一个很好的开端!在论文完成过程中,本人还得到了其他老师和许多同学的热心帮助,本人向他们表示深深的谢意!
最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢!
关注博主下篇更精彩
一键三连!!!
一键三连!!!
一键三连!!!
感谢一键三连!!!