




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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文件是用来保存用户信
3、息;menu文件是主菜单,要求运行的时候能显示一个菜单供用户选择;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结构层次图§3.2.运行流程 (1)总运行流程(2)addusers模块运行流程(3)
5、deluser模块用户运行流程四 系统实现主菜单:选择1:打印当前所有用户选择2:打印当前所有用户记录(格式化后)选择3:打印用户名和用户ID选择4:打印用户名和用户ID(格式化后)选择5:查询特定用户没有输入关键字和输入关键字没有记录:查找到记录:选择6:添加用户添加成功:用户名无效情况:用户名只能是数字或字母,用户名不能为空,密码无效:密码不能小于,密码不能为空,密码只能是数字或字母,密码必须和确认密码相同用户ID无效:用户ID不能为空,用户ID不能小于,用户ID只能为数字组ID无效:组ID不能为空,组ID不能小于,组ID只能为数字登录shell无效:shell只能是bash,sh,kas
6、h,csh中的一种,shell不能空选择7:删除用户查找用户ID存在,是否要删除选Y,删除成功:用户ID不存在和没有输入用户ID情况:用户ID存在,在确认删除选N和其他字符是退出: 选择Q:退出不正确选择:五 代码实现1)主菜单代码#! /bin/bash#删除用户clearecho " 用户删除 "echo "="while truedo read -p "输入用户ID:" useridsif( test expr match "$userids" "0-9*" -ne expr length
7、 "$userids" ) then echo "输入的用户ID只能是数字,请重新输入"elif ( test -z "$userids" ) then echo "用户ID不能为空"else breakfidonegetuserid=$( awk -F ':' ' $3 = "'$userids'" print $3 ' passwd )if ( test $getuserid ) then read -p "是否要删除(Y/N):&q
8、uot; ack if (test "$ack" = "Y" ) then sed -i '/'"$userids"'/d' passwd if ( test $? -eq 0) then echo "删除成功" else echo "删除失败" break fi else break fielse echo "用户不存在"fi2)用户添加代码#! /bin/bashclear#用户名echo " 新用户添加 "echo &
9、quot;="while truedo echo -n "请输入用户名:"read username a= expr match "$username" "0-9a-zA-Z*" b= expr length "$username" if ( test $a -ne $b ) then echo "用户名只能是数字或字母,请重新输入用户名:"elif ( test -z "$username" ) then echo "用户名不能为空,请重新输入用户名:&
10、quot;else breakfidone#用户密码 while truedo read -p "请输入密码:" passwd if ( test expr match "$passwd" "0-9a-zA-Z*" -ne expr length "$passwd" ) thenecho "用户密码只能为数字或字母,情重新输入密码"elif ( test -z "$passwd" ) thenecho "用户密码不能为空,请输入密码"elif ( test
11、 expr length "$passwd" -lt 6 ) thenecho "密码长度不能小于6"else read -p "请输入确认密码:" ackpwif(test "$passwd" = "$ackpw" ) then breakelseecho "两次的密码不匹配"fifidone#用户IDwhile truedo read -p "请输入用户ID:" useridif ( test expr match "$userid"
12、; "0-9*" -ne expr length "$userid" ) thenecho "用户ID只能为数字"elif ( test -z "$userid") thenecho "用户ID不能为空"elif ( test $userid -lt 500 ) thenecho "用户ID不能小于500,请重新输入"else breakfidone#组IDwhile truedo read -p "请输入组ID:" groupidif ( test ex
13、pr match "$groupid" "0-9*" -ne expr length "$groupid" ) thenecho "组ID只能为数字"elif ( test -z "$groupid" ) thenecho "组ID不能为空, 请重新输入"elif ( test $groupid -lt 500 ) thenecho "组ID不能小于500,请重新输入"elsebreakfidone#登录shellwhile truedoread -p &
14、quot;请输入登录shell(bash,sh kash,csh):" shellnameif (test "$shellname" != "bash" -a "$shellname" != "sh" -a "$shellname" != "kash" -a "$shellname" != "csh" ) thenecho "你输入的shell名不存在本系统中,请重新输入"else breakfidone#
15、添加用户userinfo="$username:$passwd:$userid:$groupid:$username:/home/$username:/bin/$shellname"if ( test $? -ne 1 ) thenecho $userinfo >> passwdif ( test $? -eq 0 ) then echo "用户添加成功"elseecho "用户添加失败" fifi3)用户删除代码#! /bin/bash#删除用户clearecho " 用户删除 "echo "
16、;="while truedo read -p "输入用户ID:" useridsif( test expr match "$userids" "0-9*" -ne expr length "$userids" ) then echo "输入的用户ID只能是数字,请重新输入"elif ( test -z "$userids" ) then echo "用户ID不能为空"else breakfidonegetuserid=$( awk -F ':' ' $3 = "'$userids'" print $3 ' passwd )if ( test $getuserid ) then read -p "是否要删除(Y/N):" ack if (test "$ack" = "Y" ) then sed -i '/'"$userids"'/d' passwd if ( test $? -eq 0) then echo &q
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 采购相关安全协议书
- 车库出售定金协议书
- 解除车贷合同协议书
- 健身俱乐部预售协议书
- 项目合股承包协议书
- 配偶同意卖房协议书
- 餐厅人身安全协议书
- 酒店订餐免责协议书
- 餐厅员工持股协议书
- 退休人员免责协议书
- DB3309T 106-2024人力资源和社会保障数据分类分级规范
- 租赁法律知识讲座课件
- 2025届吉林省长春市高三质量监测(三)政治试题及答案
- GB/T 24894-2025动植物油脂甘三酯分子2-位脂肪酸组分的测定
- 2024年江苏常州中考满分作文《那么旧那样新》8
- 4P营销理论课件
- 幕墙工程施工方案及述标文件
- 《生鲜农产品供应链中双渠道模式合作演化博弈实证研究》17000字
- 湖北省武汉市华师一附中2025届中考生物押题试卷含解析
- 竣工结算审计服务投标方案(2024修订版)(技术方案)
- 某药业公司管理制度汇编
评论
0/150
提交评论