系统中一共有三个组os,student和teacher
① os组中有所有的学生和教师:stu1,stu2,stu3,stu4以及teacher,服务于课程。
② student组中有所有的学生:stu1,stu2,stu3以及stu4,服务于学生。
③ teacher组中有所有的教师:teacher,服务于教师
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,最后得到所有的交作业学生信息和总数
然后再利用crond进程定时执行该脚本,这里我设置为每天的23:59统计一次交作业名单
而且记录了脚本执行日志。
5) 自动批改指定格式的作业脚本设计说明
该脚本名称为grade-calculate.sh
这里我测试使用的作业格式如下:
其中开头的#standard template用于区别是否使用指定格式的作业,每一道题都以数字+.+答案为格式,因此可以设计脚本如下:
① 遍历homework目录下的文件
② 对于每一个文件,遍历十次
③ 利用文本分析工具awk,将学生作业每一行的答案解析出:以.分割序号和答案,将第二个参数打印赋给answer。
④ 同理解析标准答案的值correct,如果correct=answer,则该作业加十分
⑤ 将遍历得到的分数利用流编辑器sed加入到每一个学生作业记录的后面
四、 配置文件关键修改处的说明及运行情况
② 学生教师服务
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
2) /home/class/下相关文件
tree /home/class/
3) 学生上传作业(Linux系统下)
以stu1学生上传为例
学生可以在/home/class/grade****下载作业模板
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FdzLt6kY-1648305528723)(http://r9awog79x.hn-bkt.clouddn.com/image-20220326222858918.png)]
进入homework目录
查看当前作业目录
上传作业成功
无法下载他人作业
4) 学生上传作业(Windows系统下)——接下来大部分操作都在Windows下进行
在Windows系统进入[\192.168.114.130](file://192.168.114.130),输入账号密码
进入到共享文件夹下
上传作业
5) 查看脚本统计交作业名单
出于测试的目的,这里我将执行时间改成了18:35
在Windows系统进入\192.168.114.130
进入grade文件夹可以看到统计名单grade.txt
也可以下载到自己的电脑中
6) 教师使用脚本批改指定格式的作业
最全的Linux教程,Linux从入门到精通
======================
-
linux从入门到精通(第2版)
-
Linux系统移植
-
Linux驱动开发入门与实战
-
LINUX 系统移植 第2版
-
Linux开源网络全栈详解 从DPDK到OpenFlow
第一份《Linux从入门到精通》466页
====================
内容简介
====
本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。
本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。
需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!