2023年8月3日发(作者:)
大作业任务书
课程名称:
Linux操作系统
题 目: Linux期末大作业
专 业: 计算机科学与技术
班 级: 计算机185班
学 号: 6109118148
学生姓名: 全昊
完成人数:
起讫日期:
任课教师: 李荣鑫 职称: 副教授
完成时间:
说 明
1. 本任务书由任课教师填写后,下达到学生。
2. 任务完成后,任课教师需填写小结表。
3. 任务书、学生成绩与学生完成后的大作业(纸质和电子两种)一并报送各教学研究部审核后转教务办。
4. 另附一份全班大作业总结 大作业的要求和内容:(包括题目选择范围、技术要求、递交时间、考核方法等)
1. 要求独立完成大作业项目。(题目附后面)
2. 虚拟机以自己的名字命名,确保Shell命令提示符能看到自己的名字信息。不允许有雷同和抄袭的情况,否则双方成绩均按不及格处理。
3. 所有的操作结果要有截图,Shell编程题要有完整的代码,并附运行结果截图。#输出结果把个人信息加上。
4、完成大作业后,必须提交以下内容:
1)大作业任务书(电子版和打印版)
2)大作业报告。大作业报告必须给出所有项目内容的实现过程,并附大作业小结。
5、大作业提交时间:课程结束时,进行统一答辩,并将全班同学的大作业统一刻录成光盘,其中任务书还要求上交纸质的打印版。
教师小结:
成绩:
教 师 签 名:
教研部负责人:
学生姓名:
《Linux操作系统》期末大作业
(要求将计算机名改为你的名字,以便命令行截图时能看到个人信息,shell编程题的源程序代码的第二行用注释给出个人信息。)
1. 写出完成下列操作的Linux命令
(1) 给shell脚本文件设置文件主和小组用户拥有可执行权限,其他用户无可执行权限。(若无相应文件可以先创建)
#sudo touch
#sudo chmod 776
(2) 将目录/home/ncu下的所有文件拷贝到/data。(若无相应的目录可以先创建)
#sudo cp /home/ncu/* /home/data
拷贝前:
(3) 安装软件包apache2并查看启动状态。
# sudo apt-get install apache2
(4) 将/home/ncu目录打包压缩,生成文件,并将此文件保存到/data目录
#sudo tar -zcvf data/ ncu
#tar默认使用的是相对路径,如果按照一般习惯书写绝对路径可能导致错误。
(5) 删除目录/home/ncu及其下面所有文件。
#rm -rf /home/ncu
(6) 统计当前目录下普通文件的数目并显示结果。
#ls -lR |grep "^-"|wc -l
(7) 查询软件mysql是否安装,若没安装,请安装。
#service mysql status 检查数据库服务是否启动
#sudo apt-get install mysql-server
(8) 将 /etc下所有文件信息保存到~/中。
#ls -al /etc >~/
(9) 查找/home目录下所有空文件。
#find /home -type d -empty
(10)将系统的日期设置为2018年12月20日8时30分。
#date -set “20181220 08:30:00”
2. 建立以下用户、组并设置口令,写出相关的操作命令。
1) 建立用户smith
#sudo useradd smith
2) 建立组名sysadmin
#sudo groupadd sysadmin
3) 将smith加入组sysadmin
#sudo usermod -g sysadmin smith
4) 为smith设置口令654321
#sudo passwd smith
654321
5) 将文件的 所有者设为 smith. 所属组设为sysadmin.
#sudo chown smith
6) 列出Linux系统下的所有可登录用户
#cat /etc/passwd
3. 文件拷贝及相关问题,写出相关的操作命令。
1). 建立目录/option1
#sudo mkdir optionl
2) 在目录/option1下生成一空文件empty,该文件拥用者为smith
#touch empty
#chown smith empty
3) 复制该文件到/tmp目录下的empty1文件,保留该文件的所有属性
#cp -p /optionl/empty /tmp/empty1
4) 软链接该文件到/tmp目录下的soft文件
#sudo ln optionl/empty tmp/soft
5) 在用户自家目录下查找所有扩展名为.c和.h文件。
#find ./ -name “*.[ch]”
4、网络相关操作命令(写出相关操作并截屏)
1)查看虚拟机机的IP地址_ifconfig -a_________________。
2)尝试向网络上的另一台主机(另一台虚拟机或物理机)发送数据包,测试是否能够进行通讯(ping)。
#ping 119.3.235.179#IP是我的服务器IP
3)使用ifconfig命令修改虚拟机的IP地址、子网掩码。
#sudo ifconfig ens33 202.196.233.5 netmask 255.255.255.0
网卡设备名通过ifconfig获得
4)使用route命令 设置虚拟机的默认网关。
#sudo route add default gw 192.168.1.0
5)编辑/etc/文件,设置DNS,设置完毕重新启动网络服务,尝试向网关发送数据包测试网络配置是否正确,如不正确则重新配置直至网络连通。
(设置好后用ping 测试网络的连通性)
之前的DNS如下图:
先修改文件的权限,用gedit修改对应的DNS地址:
修改后查看到的DNS地址:
重启网络服务:
尝试ping通:
6)netstat命令的使用,监控网络的状态。
(1)显示所有TCP端口的信息。
(2)显示所有网络接口信息
5.Shell编程题
1)编写shell程序,用read 命令从键盘读入两个数到连个变量中,计算并输出这两个数的和与积。
# quanhao
# edit at 2019-12-20
# /bin/bash
read -p "please input two numbers: " a b
expr $a + $b &>/dev/null
echo "a+b=$(($a+$b))"
echo "axb=$(($a*$b))"
echo "author quanhao"
2)编写shell程序,计算两个数的和与积。这两个数通过参数传入。如执行 3 5 ,则输出 8 和 15.
# quanhao
# edit at 2019-12-20
# /bin/bash
echo "a+b=$(($1+$2))"
echo "axb=$(($1*$2))"
echo "author:quanhao"
3)
编写一个判断用户名和密码是否正确的shell程序,如用户名和密码都正确,则输出“YES!”,否则输出”NO!”.
1.
# quanhao
2.
# edit at 2019-12-20
3.
# /bin/bash
4.
echo "input the username:"
5.
read u
6.
echo "input the password:"
7.
read p
8.
if test -r
9.
then
10.
while read fn fp
11.
do
12.
#echo "$fn"
13.
#echo "$fp"
14.
if test "$fn" = "$u"
15.
then
16.
if test "$fp" = "$p"
17.
then
18.
echo "YES!"
19.
break
20.
fi
21.
fi
22.
done <
23.
if test "$fn" != "$u"
24.
then
25.
echo "NO!"
26.
fi
27.
fi
先编写用于比较的用户名和密码列表文件:
4)
编写一个程序,测试当前目录下一个文件是否存在, 若存在输出“ YES!”,否则输出”NO!”. 文件名通过参数传入。
# quanhao
# edit at 2019-12-20
# /bin/bash
if test -r $1
then
echo "YES!"
else
echo "NO!"
fi
5)编写shell程序, 完成根据实验的时间,分别给出:“上午好!”或者“下午好!”,或“晚上好!”的问候。(提示:可用 date +%H得到系统的小时)
# quanhao
# edit at 2019-12-20
# /bin/bash
time=$(date "+%H")
if [ "$time" -ge "6" ]&&[ "$time" -le "12" ]
then
echo "now is $time"
echo "good morning!"
elif [ "$time" -gt "12" ]&&[ "$time" -le "18" ]
then
echo "now is $time"
echo "good aftnoon!"
elif [ "$time" -gt "18" ]||[ "$time" -lt "6" ]
then
echo "now is $time"
echo "good night!"
fi
6. 设计一个shell程序,计算n的阶乘,要求:1)从命令行接收参数n; 2)程序运行后判断参数n的合法性,即是否有参数,如有,是否为正整数;若非法,给出错误提示信息。3)最后输出计算结果。
# quanhao
# edit at 2019-12-21
# /bin/bash
multiply()
{
if [ $1 -gt 1 ]
then
result=$(($result*$1))
next=$(($1-1))
multiply $next
fi
}
if [ $# -ne 1 ]
then
echo -e "please input a parameter!"
echo "author:quanhao"
exit 1
fi
result=1
if [ $1 -ge 1 ]
then
multiply $1
else
echo "Invalid input paramer!It must be a integer greater than 0"
echo "author:quanhao"
exit 1
fi
echo "$1! = $result"
exit 0
7.编写Shell程序,程序功能,先建立一个学生组student,然后批量建立若干个学生用户,用户名的前导字符形如stu,再加数字序号,如stu20,用户名的前导字符和用户个数通过参数传递。格式如:mysh stu 100 。
# quanhao
# edit at 2019-12-21
# /bin/bash
if [ $# -eq 2 ]
then
a=$1
b=0
groupadd student
echo "groupadd success!"
while (($b < $2))
do
useradd $a_$b
echo "user $a$b creat sucess!"
echo "author:quanhao"
b=$(($b+1))
done
fi
心得体会:由于之前的尝试,student用户组已创建,故程序抛出了一个异常,但是用户添加的正确的。
8. 写出以下服务器的配置方法:SSH服务器、WWW服务器 FTP服务器(任选期中一个)(包括配置文件,启动方法,还有基本的配置信息,还有服务器成功访问后的截图)
我选择配置FTP服务器
1. 安装FTP服务器
#sudo apt-get install vsftpd ftp
2. 配置FTP服务器
修改权限,修改相关配置
增加
write_enable=YES
utf8_filesystem=YES
两条信息。
重启ftp服务器
#sudo systemctl restart vsftpd
登录成功!
尝试在浏览器访问本地FTP服务器成功!
发布者:admin,转转请注明出处:http://www.yc00.com/web/1691029800a490627.html
评论列表(0条)