《Linux操作系统》课程设计任务书Word格式.docx
《《Linux操作系统》课程设计任务书Word格式.docx》由会员分享,可在线阅读,更多相关《《Linux操作系统》课程设计任务书Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
![《Linux操作系统》课程设计任务书Word格式.docx](https://file1.bdocx.com/fileroot1/2022-12/11/1464e302-7d39-4c96-83ae-2fafd00e1dd2/1464e302-7d39-4c96-83ae-2fafd00e1dd21.gif)
要求学生能够利用shell脚本编程实现较为基本的功能。
2.设计内容
在主Shell脚本文件里(必须以menu命名)要有一个多操作选项的菜单以便用户从中选择。
在不同任务的中,这些操作能自动实现以下功能:
1)在屏幕上显示当前所有用户的记录
2)在屏幕上显示当前所有用户(经过格式化和排序的)的记录
3)只在屏幕上显示用户名和用户ID
4)只在屏幕上显示(经过格式化和排序的)用户名和用户ID
5)查询并显示特定用户的记录
6)往passwd文件里增加新的用户记录
7)从passwd文件里删除某个用户记录
在目录下有四个文件分别为menu,passwd,add,delete
注:
●passwd是自建数据文件,而不是/etc/passwd这个文件,切记。
●menu、add和delete是shell脚本文件。
passwd文件中的内容具体形式如下所示:
root:
x:
0:
/root:
/bin/bash
linux:
500:
/home/linux:
lianmin:
503:
/home/lianmin:
如果,你选择此设计题目,请在passwd文件中,模仿以上形式,添加以你学号和姓名拼音为账户的两行记录,具体添加模式如下:
你的学号:
1000:
something:
/home/你的序号:
姓名的拼音:
1001:
/home/姓名的拼音:
注意,这里添加这些类似系统用户的信息,并不是真实与用户关联的,这里只是用来进行测试shell脚本功能的数据信息而已。
1)menu脚本执行后,大概应该呈现为下图所示的情况:
假如,passwd文件中的内容如下所示:
080510001:
800:
/home/080510001:
zhangsan:
801:
/home/zhangsan:
2)选择菜单1时,显示的结果大概如下图所示:
3)选择菜单2时,显示的结果大概如下图所示:
4)选择菜单3时,显示的结果大概如下图所示:
5)选择菜单4时,显示的结果大概如下图所示:
6)选择菜单5,并输入需要查询的用户名时,显示的结果大概如下图所示:
7)选择菜单6,显示的结果大概如下图所示:
完成添加用户后,在调用菜单2应该能够看到新添加用户mycount的信息条目。
8)选择菜单7,通过用户ID来删除用户,显示的结果大概如下图所示:
3.设计环境
●vmware8虚拟环境、
●Ubuntu虚拟操作系统
●bash或其他shell脚本环境
4.设计提示
1)menu脚本框架提示:
#!
/bin/bash
record_file=passwd
add_file=add
delete_file=delete
a="
你的选择是:
"
b="
输入关键字是:
clear
whiletrue
do
echo"
==========信息主菜单======================="
……
echo-e"
你的选择是:
(等待用户输入)"
echo
readchoice
$a$choice"
case$choicein
1)…..
2)…..
3)…..
4)…..
5)
whiletrue
do
请输入要查询的用户名:
readanswer
$b$answer"
if(test-z"
$answer"
)
then
你还没有输入"
continue
elif
(testhead$record_file|grep-iw$answer)#-i不区分大小写-w全符合
then
echo"
"
break
else
你输入的用户不存在,没有找到$answer"
break
fi
done;
;
6)source$add_file;
7)source$delete_file;
q)exit;
Q)exit;
*)echo"
无效的代码"
esac
请按回车继续..."
done
2)add脚本编写提示:
该脚本实现与用户的交互式添加用户信息,包括需要添加用户的:
用户名、用户密码、用户ID、组ID、全名、用户家目录、登录shell类型。
对于每一项信息需要进行单独的读取和必要验证。
下面给出添加用户名的相关代码示例:
echo-n"
用户名:
readnewname
while(test-z$newname)
没有输入用户名"
echo-n"
readnewname
until[`echo$newname|grep'
^[a-zA-Z]*$'
`]||[`echo$newname|grep'
^[0-9][0-9]*$'
^[a-zA-Z0-9]*$'
`]
do
用户名只包含字母和数字!
done
3)delete脚本编写提示:
delete脚本通过用户ID,找到passwd文件中对应用户ID的记录,并将其删除。
同时要考虑到用户可能误操作,因此要在真正删除用户信息前,进行用户确认,如果用户不确认删除,那么就不能将用户信息记录从passwd中删除。
这就需要一个临时文件进行辅助,将删除后的效果保存于该临时文件中,只有用户确认删除后,再将临时文件内容写入到passwd文件。
否者保持passwd内容不变。
注意:
本设计题目中是对一个自建的passwd文件,而非/etc/passwd文件进行的操作。
如果在真实的环境中,要实现用户信息管理所需要考虑的事情要多的多。
比如:
文件访问权限问题、用户在系统中拥有的文件资源如何删除等。
设计内容二LAMP开发环境搭建与应用
Linux+Apache+Mysql+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。
随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。
从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案.
本设计课题期望学生能够在Ubuntu系统中搭建起一个LAMP开发环境,并完成编写一个网页,该网页中的内容应包含:
学生的个人简单信息、服务器系统相关信息等内容。
1)在虚拟机环境中的Ubuntu系统中成功搭建LAMP开发环境。
2)编写一个网页,该网页能够显示完成本设计的学生信息以及apache服务器的相关信息。
3)可以在宿主机,即虚拟机运行系统中通过域名方式访问该网页。
●运行于window系统下的vmware虚拟机环境
●运行于vmware虚拟机环境环境中的Ubuntu操作系统
●Linux系统的DNS服务配置套件bind9
4.设计提示:
1)LAMP开发环境搭建
(1)安装MYSQL
sudoapt-getinstallmysql-server
sudoapt-getinstallmysql-client
安装过程中会要设置用户名和密码,设置后要记住,后面会使用。
(2)安装Apache
sudoapt-getinstallapache2
(3)安装PHP
sudoapt-getinstallphp5
sudoapt-getinstalllibapache2-mod-auth-mysql
sudoapt-getinstallphp5-mysql
(4)设置Ubuntu文件执行读写权限:
LAMP组建安装好之后,PHP网络服务器根目录默认设置是在:
/var/www。
由于Linux系统的安全性原则,该目录下的文件读写权限是只允许root用户操作的,所以我们不能在www文件夹中新建php文件,也不能修改和删除,必须要先修改/var/www目录的读写权限。
在界面管理器中通过右键属性不能修改文件权限,得执行root终端命令:
sudochmod777/var/www。
然后就可以写入html或php文件了。
或者:
Ø
suroot(用root用户)
chownusername/var/www(将username替换为您当前用户的用户名)
exit或者ctrl+d(退出root)
如果,ubuntu系统root用户还不可用,那是因为ubuntu系统默认root密码为空,您可以通过如下命令设置密码:
sudopasswd-lroot
(5)安装phpmyadmin-Mysql数据库管理
sudoapt-getinstallphpmyadmin
在安装过程中会要求选择Webserver:
apache2或lighttpd,选择apache2,按tab键然后确定。
然后会要求输入设置的Mysql数据库密码连接密码。
然后将phpmyadmin与apache2建立连接,例如:
www目录在/var/www,phpmyadmin在/usr/share/phpmyadmin目录,所以就用命令:
sudoln-s/usr/share/phpmyadmin/var/www建立连接。
在浏览器地址栏中打开http:
//localhost/phpmyadmin,测试是否工作正常。
(6)检测Apache是否正常
在浏览器中打开:
http:
//localhost/
如果出现如下信息,则表明正常。
(7)检测PHP是否正常
Ubuntu下Apache的默认安装路径为/var/www/,到其目录下新建info.php文件,文件内容为:
<
?
phpphpinfo();
?
>
然后在浏览器中打开:
//localhost/info.php看是否正常。
如果现实类似如下图所示状态表示PHP运行正常。
在该目录直接新建文件是没有权限的,为其增加当前用户权限。
(8)检测MySql是否工作正常
上面php,Apache都已经测试过了,下面再测试一下Mysql数据库是否已经正确启用。
在/var/www目录下新建mysql_test.php:
<
php
$link=mysql_connect("
localhost"
"
root"
123456"
);
if(!
$link)
{
die('
Couldnotconnect:
'
.mysql_error());
}
elseecho"
Mysql已经正确配置"
mysql_close($link);
如果在浏览器中能够显示上图所示结果,就表示mysql运行正常。
(9)解决Firefox浏览器显示中文乱码等问题
上面在FireFox浏览器中打开mysql_test.php或phpmyadmin测试时,如果出现了中文乱码,则是默认语言设置问题,解决方法如下:
打开apache配置文件:
udogedit/etc/apache2/apache2.conf,在最后面加上:
AddDefaultCharsetUTF-8,如果还是乱码的,再将UTF-8改用gb2312。
重启Apache:
sudo/etc/init.d/apache2restart再刷新mysql_test.php中文乱码没有了。
如果要人工启动mysql:
mysql-uroot-p,根据提示输入密码。
如果重启Apache时出现:
*Restartingwebserverapache2
apache2:
Couldnotreliablydeterminetheserver’sfullyqualifieddomainname,using127.0.1.1forServerName
则还是修改apache配置文件:
sudogedit/etc/apache2/apache2.conf,在文件最后设置:
ServerName127.0.0.1
2)PHP网页设计
此次需要编写的php网页文件,通过浏览器显示需要达到如下图所示的效果:
获取以上部分系统信息的php语句如下所示:
1)服务器系统:
phpechodefined('
PHP_OS'
)?
PHP_OS:
'
未知'
2)服务器软件:
phpecho$_SERVER["
SERVER_SOFTWARE"
];
3)PHP版本:
phpechophpversion();
4)MySQL服务器:
phpechomysql_get_server_info();
5)服务器地址:
phpecho$_SERVER['
SERVER_ADDR'
6)服务器根目录:
DOCUMENT_ROOT'
7)服务器时区:
phpechodate("
T"
time())?
8)register_globals:
phpecho$onoff;
9)文件上传:
phpecho$upload;
10)用户主机名:
phpechogethostbyaddr($_SERVER['
REMOTE_ADDR'
]);
11)用户IP地址:
REQUEST_METHOD'
3)apache服务器的域名配置
由上一步骤中,我们可以看到apache服务器的ip地址为192.168.41.136。
而平时我们访问网页时通常是使用域名来进行的。
因此,在此也希望大家能够熟悉一下Linux系统下的DNS服务的配置方法。
对于上面配置的apache服务器,如果在没有配置域名解析服务时,通常我们访问apache服务器的方式通常是:
●远程访问:
//192.168.41.136
●本地访问:
//127.0.0.1或http:
//localhost
而在这里我们希望能够通过我们自己的域名来访问apache服务器。
大致网络环境描述如下:
●ubuntu系统的主机名为:
whpuser,
●Ubuntu系统的IP地址为:
192.168.41.136
●windows系统的实体网卡IP地址为:
192.168.1.102
●vmware的虚拟nat网卡:
vmnet8的IP地址为:
192.168.41.1
●自定义的域:
●web服务器的机器名:
www,即访问apache服务器的域名为。
具体配置方法提示:
Linux系统中DNS服务主要使用bind9套件进行配置,因此首先需要安装好bind9.
sudoapt-getinstallbind9
安装好bind套件后,可以使用ls-l/etc/bind命令查看该目录中的文件,可以看到其中包含的一些默认DNS配置文件,其中需要修改的文件为named.conf.local。
为了满足前面给出的网络环境描述,需要配置以下几个文件的内容:
(1)named.conf.local(这个是安装后已存在的文件)
//
//Doanylocalconfigurationhere
zone"
41.168.192.in-addr.arpa"
IN{
typemaster;
file"
/etc/bind/db.192.168.41"
};
1.168.192.in-addr.arpa"
/etc/bind/db.192.168.1"
/etc/bind/"
//Consideraddingthe1918zoneshere,iftheyarenotusedinyour
//organization
//include"
/etc/bind/zones.rfc1918"
以上斜体部分,是需要自行添加的内容。
下面根据上面添加内容中有下划线部分的文件路径指定的文件,需要自行创建和编辑内容。
(2)db.192.168.41
db.192.168.41
$TTL604800
@INSOA..(
1;
serial
604800;
refresh
86400;
retry
2419200;
expire
604800);
negativecacheTTL
@INNS.
136INPTR.
1INPTR.
(3)db.192.168.1
db.192.168.1
2419200;
102INPTR.
(4)
refresh
whpuserINA192.168.41.136
wwwINCNAMEwhpuser
windowINA192.168.41.1
window1INA192.168.1.102
编辑好以上文件文件后,需要重启bind9服务:
sudo/etc/init.d/bind9restart
通过以下命令查看服务启动中是否有错误:
tail/var/log/syslog
如果没有本质错误应该出现下图所示情况:
使用nslookup命令的交互式方式检验域名正向解析和反向解析是否正常:
以上内容成功后,应该能够使用域名在虚拟机环境运行的ubuntu中访问apache服务器,同时也能在运行虚拟机vmware的windows环境中通过域名来访问ubuntu系统中的apache服务器的网页(前提是需要将网卡的中IP配置中的主dns配置为ubuntu系统的IP地址)。
执行效果大致如下图所示:
●在Ubuntu系统中访问:
●在windows系统中访问:
六、设计要求
1.上机前请认真查询资料,并认真完成课程设计内容和报告编写工作;
2.上机时要保证到课率,并认真进行课程设计要求的内容;
3.任务完成时报告老师,上机验收运行结果,现场提问;
4.根据具体任务要求,提交源程序电子档和纸质课程设计说明书。
说明书中除了在封面应有题目、班级、姓名、学号和课程设计日期以外,其正文一般应包括:
1)课程设计目的
2)课程设计内容