



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一 绪论1.1 设计背景Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和 UNIX的多用户、多任务、支持多线程和多CPU 的操作系统。Linux继承了Unix以网络为核心的设计思想, 是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。1.2 设计目的在Linux系统的/etc目录下有这样一个文件passwd,该文件里包含系统中所有用户信息的记录,记录里包含每个用户的如下信息:用户名、密码、用户ID 、组ID、用户全名、用户主目录和用户登录所用的shell 。请设计一个脚本
2、(shell )程序能实现增加、删除、查找和显示特定用户信息的功能。你们可以通过创建一些UNIX/LINUX shell脚本文件来满足以上需求。二 需求分析2.1 系统概述2.1.1 任务概述Linux 作为多用户、多任务的操作系统,其系统资源是所有用户共享的。对用户的管理是操作系统的重点。LINUX 课程设计要用shell 编程实现,将理论学习付诸实践。设计一个脚本( shell )程序能实现增加、删除、查找和显示特定用户信息的功能。2.1.2 需求规定程序要包括四个文件,即menu, add, delete , passwd 四个文件。 passwd 文件是用来保存用户信息 ;menu文件
3、是主菜单, 要求运行的时候能显示一个菜单供用户选择;addusers文件是用来增加信息;deluser文件是用来删除信息。在主Shell 脚本文件里 (必须以menu命名)要有一个多操作选项的菜单以便用户从中选择。对于任务6 和7,需要编写单独的Shell脚本文件(必须分别命名为addusers 和deluser)并且在主脚本menu文件中调用这些脚本文件。2.2 功能需求在主 Shell 脚本文件里(必须以 menu 命名)要有一个多操作选项的菜单以便用户从中选择。在不同任务的中,这些操作能自动实现以下功能:1、 在屏幕上显示当前所有用户的记录2、 在屏幕上显示当前所有用户(经过格式化和排序
4、的)的记录3、 只在屏幕上显示用户名和用户ID4、 只在屏幕上显示(经过格式化和排序的)用户名和用户ID5、 查询并显示特定用户的记录6、 往 passwd 文件里增加新的用户记录7、 从 passwd 文件里删除某个用户记录你可以使用UNIX/LINUX中一些比较简单的命令或命令组合来执行1、 2、3、 4、 5 的任务。对于任务 6 和 7,你需要编写单独的Shell 脚本文件(必须分别命名为addusers和 deluser)并且在你的主脚本menu 文件中调用这些脚本文件。三 系统设计3.1 结构层次图主菜单显示显示显示显示当前当前格式查找添加删除所有用户所有化后指定名和用户用户退出用
5、户用户用户用户的记用户信息信息经格名和信息ID录式化用户3.2.运行流程(1)总运行流程主菜单是否正确提示错YN选择误功能实是否选QN继续选择现Y退出( 2) addusers模块运行流程用户添加是否正确填写信息NY提示错添加用误户信息进入主菜单(3)deluser 模块用户运行流程用户删除输入用户 ID是否存在N用户 IDY提示错误是否删除NY删除成功进入主菜单四 系统实现主菜单:选择 1:打印当前所有用户选择 2:打印当前所有用户记录(格式化后)选择 3:打印用户名和用户ID选择 4:打印用户名和用户ID (格式化后)选择 5:查询特定用户没有输入关键字和输入关键字没有记录:查找到记录:选
6、择 6:添加用户添加成功:用户名无效情况:用户名只能是数字或字母,用户名不能为空,密码无效: 密码不能小于,密码不能为空, 密码只能是数字或字母, 密码必须和确认密码相同用户 ID 无效:用户ID 不能为空,用户ID 不能小于,用户ID 只能为数字组 ID 无效:组ID 不能为空,组ID 不能小于,组ID 只能为数字登录 shell 无效: shell 只能是 bash,sh,kash,csh中的一种, shell 不能空选择 7:删除用户查找用户ID 存在,是否要删除选Y ,删除成功:用户 ID 不存在和没有输入用户ID 情况:用户 ID 存在,在确认删除选N 和其他字符是退出:选择 Q:退
7、出不正确选择:五 代码实现1)主菜单代码#! /bin/bash#删除用户clearecho 用户删除echo =while truedoread -p 输入用户ID: useridsif( test exprmatch $userids 0-9* -ne expr length $userids ) thenecho 输入的用户ID 只能是数字 ,请重新输入 elif ( test -z $userids ) thenecho 用户 ID 不能为空 elsebreakfidonegetuserid=$( awk -F : $3 = $userids print $3 passwd )if (
8、 test $getuserid) thenread -p 是否要删除 (Y/N): ackif (test $ack = Y ) thensed -i /$userids/d passwdif ( test $? -eq 0) thenecho 删除成功 elseecho 删除失败 breakfielsebreakfielseecho 用户不存在 fi2)用户添加代码#! /bin/bashclear#用户名echo 新用户添加echo =while truedoecho -n 请输入用户名 :read usernamea= expr match $username 0-9a-zA-Z* b
9、= expr length $username if ( test $a -ne $b ) thenecho 用户名只能是数字或字母,请重新输入用户名:elif ( test -z $username ) thenecho 用户名不能为空,请重新输入用户名:elsebreakfidone#用户密码while truedoread -p 请输入密码 : passwdif ( test expr match $passwd 0-9a-zA-Z* -ne expr length $passwd ) thenecho 用户密码只能为数字或字母,情重新输入密码elif ( test -z $passwd
10、 ) thenecho 用户密码不能为空,请输入密码 elif ( test expr length $passwd -lt 6 ) thenecho 密码长度不能小于6elseread -p 请输入确认密码: ackpwif(test $passwd = $ackpw ) thenbreakelseecho 两次的密码不匹配fifidone#用户 IDwhile truedoread -p 请输入用户ID: useridif ( test expr match $userid 0-9* -ne expr length $userid ) thenecho 用户 ID 只能为数字 elif (
11、 test -z $userid) thenecho 用户 ID 不能为空 elif ( test $userid -lt 500 ) thenecho 用户 ID 不能小于500,请重新输入 elsebreakfidone#组 IDwhile truedoread -p 请输入组ID: groupidif ( test expr match $groupid 0-9* -ne expr length $groupid echo 组 ID 只能为数字 elif ( test -z $groupid ) thenecho 组 ID 不能为空 , 请重新输入 elif ( test $groupi
12、d -lt 500 ) thenecho 组 ID 不能小于500,请重新输入 elsebreakfidone) then#登录shellwhile truedoread -p 请输入登录shell(bash,sh kash,csh): shellnameif (test $shellname != bash -a $shellname != sh -a $shellname != kash -a $shellname != csh ) thenecho 你输入的shell 名不存在本系统中,请重新输入 elsebreakfidone#添加用户userinfo=$username:$passw
13、d:$userid:$groupid:$username:/home/$username:/bin/$shellnameif ( test $? -ne 1 ) thenecho $userinfo passwdif ( test $? -eq 0 ) thenecho 用户添加成功 elseecho 用户添加失败 fifi3)用户删除代码#! /bin/bash#删除用户clearecho 用户删除echo =while truedoread -p 输入用户ID: useridsif( test exprmatch $userids 0-9* -ne expr length $userids ) thenecho 输入的用户ID 只能是数字 ,请重新输入 elif ( test -z $userids ) thenecho 用户 ID 不能为空 elsebreakfidonegetuserid=$( awk -F : $3 = $userids print $3 passwd )if ( test $getuserid) thenread -p 是否要删除 (Y/N): ackif (test $ack = Y ) thensed -i /$userids/d passwdif ( test $? -eq 0) thenecho 删除成功 elseecho 删
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度物业管理公司员工劳动合同(含职业健康)
- 2025年汽修店转让协议范本:含维修技术保密与知识产权
- 2025年度股权抵押消费信贷合同
- 二零二五年度柴油运输市场调研与分析合同
- 2025年度高校与教育机构人才输送与教学资源共享协议
- 2025年度酒店住宿期间消防安全责任书
- 二零二五年度劳动合同解除协议范本及员工离职手续流程
- 二零二五年度写字楼租赁合同复本及共享办公空间合作
- 二零二五年度个人抵押担保贷款合同范本
- 二零二五年度人工智能公司股份转让合同
- 7号楼-招标控制价
- 《预制高强混凝土风电塔筒生产技术规程》文本附编制说明
- 2024年中国住院患者血糖管理专家共识
- 【MOOC】设计思维与创新设计-浙江大学 中国大学慕课MOOC答案
- 《如何说孩子才会听怎么听孩子才肯说》读书分享
- 旅客列车安全平稳操纵办法
- 《混凝土结构设计原理》全套教学课件
- 医疗安全(不良)事件报告制度培训课件
- 《用单摆测量重力加速度》说课稿
- 人教版九年级上册音乐 1.5中国人民解放军军歌 教案
- 2024报关员劳动合同范本(标准版)
评论
0/150
提交评论