文章目录

  • Linux操作系统实践——Samba服务器搭建
  • 一、实验目的
  • 二、实验内容
  • ② 学生教师服务
  • 三、 题目分析及基本设计过程分析
  • ② 学生教师服务
  • 1) 整体思路
  • 2) 系统用户和组分配设计说明
  • 3) 系统文件权限设计说明
  • 4) 统计交作业名单脚本设计说明
  • 5) 自动批改指定格式的作业脚本设计说明
  • 四、 配置文件关键修改处的说明及运行情况
  • ② 学生教师服务
  • 0) samba服务器配置
  • 1) 用户组和用户
  • 2) /home/class/下相关文件
  • 3) 学生上传作业(Linux系统下)
  • 4) 学生上传作业(Windows系统下)——接下来大部分操作都在Windows下进行
  • 5) 查看脚本统计交作业名单
  • 6) 教师使用脚本批改指定格式的作业
  • 7) 教师手动查看学生作业并批改
  • 8) 学生查看成绩与答案
  • 9) 教师上传学习资料
  • 10) 学生下载学习资料


Linux操作系统实践——Samba服务器搭建

仅供参考,谢绝抄袭

一、实验目的

熟练掌握 Linux 操作系统的使用,掌握 Linux 的各项系统管理功能,掌握 Linux 下各类网络服务的安装、配置以及使用,并能用 shell 脚本实现简单的管理 任务。

二、实验内容

② 学生教师服务

根据所学内容,使用一种或多种服务(如 ftp、samba、Http 等)搭建一台服务器,支持多用户访问,并能完成下述功能:

1)学生用户能实现学生作业的上传,学生以“姓名+学号”命名作业。学生 能看到作业列表,但是不能下载其他用户的作业。

2)在指定的交作业截止时间到时,编写脚本自动统计交作业的学生名单和 人数,生成文档,供教师查看。

3)教师用户能够查看学生提交的作业,在生成的交作业名单录入成绩, 并发布成绩,供学生查看。

4)对于指定格式的作业,编写脚本自动批改作业并在交作业名单中记录成绩。(注:格式可以自己指定,也可做成模板供学生下载使用)

5)教师可以提供课件和参考资料供学生下载。

三、 题目分析及基本设计过程分析

② 学生教师服务

1) 整体思路

对于这道题,我在RedHat系统上使用了Samba搭建服务器,能使学生和老师在Windows客户机上上传和下载文件,老师能在Linux系统上启动自动批改脚本批改指定格式的作业。

关于Samba服务器的配置,会在第四部分进行说明。

2) 系统用户和组分配设计说明

系统中一共有三个组os,student和teacher

① os组中有所有的学生和教师:stu1,stu2,stu3,stu4以及teacher,服务于课程。

② student组中有所有的学生:stu1,stu2,stu3以及stu4,服务于学生。

③ teacher组中有所有的教师:teacher,服务于教师

samba实验报告_linux

3) 系统文件权限设计说明

作业管理所用的文件都在linux系统的/home/class目录下,一共有三个目录homework,grade,learning,三个文件grade-count.sh,grade-calculate.sh,grade_log.log

homework目录:用于学生上传作业和教师下载学生作业。该目录的权限设置为6777,其中6设置了s权限使得学生上传文件的组和homework一致,都是teacher,这是为了保证学生不能下载其他学生的作业。该目录的拥有者为teacher。而学生上传文件的权限被设置为750,即上传者学生可以管理自己的作业,但是不能下载或查看其他学生;而教师可以下载学生的作业,但是不能更改学生的作业。

learning目录:用于教师上传学习资料以及学生可以下载学习资料。该目录的权限设置为6750,其中6设置了s权限使得教师上传文件的组和learning一致,都是os, 而该目录的拥有者为teacher。教师上传的资料的权限被设置为750,保证学生可以下载文件但是无法修改文件,教师可以任意管理上传学习资料。

grade目录:用于教师统计学生交作业名单以及录入成绩。该目录的权限设置为6750,其中6设置了s权限使得教师上传文件的组和grade一致,都是os, 而该目录的拥有者为teacher。目录中的文件权限都被设置为750,保证学生可以下载交作业名单与成绩,可以下载作业模板和答案(答案会在交作业时间截止后由教师上传),教师可以任意管理上传文件。

correct.txt:作业的正确答案

answer-standardtxt:作业模板,供学生下载使用

grade.txt:交作业名单与成绩统计

grade-count.sh:统计交作业名单的脚本,由系统按时执行,权限为777.

grade-calculate.sh:自动批改符合格式的作业的脚本,由教师自己执行,属于teacher组,权限为750。

grade_log.log:记录grade-count.sh脚本执行的情况。

4) 统计交作业名单脚本设计说明

该脚本名称为grade-count.sh

① 利用命令 date "+%Y-%m-%d %H:%M:%S记录统计的时间

② 利用正则表达式将作业文件名划分为姓名和学号,如stu1-2194411245.txt就被划分为stu1和2194411245。

③ 利用for循环统计homework目录下的所有文件,每有一个文件,count就+1,最后得到所有的交作业学生信息和总数

samba实验报告_linux_02

然后再利用crond进程定时执行该脚本,这里我设置为每天的23:59统计一次交作业名单

samba实验报告_samba实验报告_03

而且记录了脚本执行日志。

5) 自动批改指定格式的作业脚本设计说明

该脚本名称为grade-calculate.sh

这里我测试使用的作业格式如下:

samba实验报告_上传_04

其中开头的#standard template用于区别是否使用指定格式的作业,每一道题都以数字+.+答案为格式,因此可以设计脚本如下:

① 遍历homework目录下的文件

② 对于每一个文件,遍历十次

③ 利用文本分析工具awk,将学生作业每一行的答案解析出:以.分割序号和答案,将第二个参数打印赋给answer。

④ 同理解析标准答案的值correct,如果correct=answer,则该作业加十分

⑤ 将遍历得到的分数利用流编辑器sed加入到每一个学生作业记录的后面

samba实验报告_linux_05

四、 配置文件关键修改处的说明及运行情况

② 学生教师服务

0) samba服务器配置
[homework]  
comment = this folder is for students to submmit homework  
path = /home/class/homework  
valid users = @os  
read only = no  
public = no  
create mask = 0750  
force create mode = 0750  
  
[learning]  
comment = this folder is for teacher to share learning material  
path = /home/class/learning  
valid users = @os  
read only = no  
admin users = @teacher  
public = no  
create mask = 0750  
force create mode = 0750  
  
[grade]  
comment = this folder is for teacher to register student grades  
path = /home/class/grade  
valid users = @os  
read only = no  
admin users = @teacher  
public = no  
create mask = 0750  
force create mode = 0750:
1) 用户组和用户

cat /etc/group

samba实验报告_Windows_06

2) /home/class/下相关文件

tree /home/class/

samba实验报告_上传_07

3) 学生上传作业(Linux系统下)

以stu1学生上传为例

学生可以在/home/class/grade****下载作业模板

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FdzLt6kY-1648305528723)(http://r9awog79x.hn-bkt.clouddn.com/image-20220326222858918.png)]

进入homework目录

samba实验报告_Windows_08

查看当前作业目录

samba实验报告_samba服务器_09

上传作业成功

samba实验报告_samba实验报告_10

无法下载他人作业

samba实验报告_samba服务器_11

4) 学生上传作业(Windows系统下)——接下来大部分操作都在Windows下进行

在Windows系统进入[\192.168.114.130](file://192.168.114.130),输入账号密码

samba实验报告_linux_12

进入到共享文件夹下

samba实验报告_samba实验报告_13


上传作业

samba实验报告_Windows_14

5) 查看脚本统计交作业名单

出于测试的目的,这里我将执行时间改成了18:35

在Windows系统进入\\192.168.114.130

samba实验报告_Windows_15

进入grade文件夹可以看到统计名单grade.txt

samba实验报告_samba服务器_16

也可以下载到自己的电脑中

samba实验报告_上传_17

6) 教师使用脚本批改指定格式的作业

在Linux系统下启动grade-calculate.sh脚本

samba实验报告_samba服务器_18

可以看到自动批改后的交作业名单

samba实验报告_samba实验报告_19

因为stu3没有按照格式提交作业,所以系统没有计算他的成绩

7) 教师手动查看学生作业并批改

教师可以查看学生的作业

samba实验报告_Windows_20

看完以后,可以手动输入stu3的成绩

samba实验报告_samba实验报告_21

8) 学生查看成绩与答案

stu1进入文件夹grade中可以查看grade.txt从而看到自己的成绩

samba实验报告_samba服务器_22

也可以查看correct.txt查看答案

samba实验报告_samba实验报告_23

9) 教师上传学习资料

教师可以将学习资料上传到learning文件夹下

samba实验报告_samba实验报告_24

10) 学生下载学习资料

stu1进入文件夹learning中可以下载学习资料

samba实验报告_上传_25

无法上传学习资料

samba实验报告_上传_26