收藏 分享(赏)

Linux编程用户信息管理.doc

上传人:精品资料 文档编号:10687209 上传时间:2019-12-28 格式:DOC 页数:12 大小:469.50KB
下载 相关 举报
Linux编程用户信息管理.doc_第1页
第1页 / 共12页
Linux编程用户信息管理.doc_第2页
第2页 / 共12页
Linux编程用户信息管理.doc_第3页
第3页 / 共12页
Linux编程用户信息管理.doc_第4页
第4页 / 共12页
Linux编程用户信息管理.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、一 绪论1.1 设计 背景Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX的多用户、多任务、支持多线程和多 CPU 的操作系统。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于 Intel x86 系列CPU 的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。1.2 设计目的在 Linux 系统的 /etc 目录下有这样一个文件 passwd,该文件里包含系统中所有用户信息的记录,记录里包含每个用户的如下信息:用户名、密码、用户 ID、组 ID、用户全名、用户主目录和用户登

2、录所用的 shell。请设计一个脚本(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、 在屏幕上显示当前所有用户的记录

4、2、 在屏幕上显示当前所有用户(经过格式化和排序的)的记录3、 只在屏幕上显示用户名和用户 ID4、 只在屏幕上显示(经过格式化和排序的)用户名和用户 ID5、 查询并显示特定用户的记录6、 往 passwd 文件里增加新的用户记录7、 从 passwd 文件里删除某个用户记录你可以使用 UNIX/LINUX 中一些比较简单的命令或命令组合来执行 1、2、3、4、5 的任务。对于任务 6 和 7,你需要编写单独的 Shell 脚本文件(必须分别命名为 addusers 和deluser)并且在你的主脚本 menu 文件中调用这些脚本文件。三 系统设计3.1 结构层次图显示当前所有用户的记录显示

5、当前所有用户经格式化主菜单删除用户信息显示用户名和用户I D显示格式化后用户名和用户查找指定用户信息添加用户信息退出3.2.运行流程(1)总运行流程主菜单Y功能实现退出Y提示错误N是否正确选择是否选 QN继续选择(2)addusers 模块运行流程用户添加Y添加用户信息进入主菜单提示错误N是否正确填写信息(3)deluser 模块用户运行流程用户删除Y进入主菜单Y提示错误N是否存在用户 I D输入用户 I D是否删除N删除成功四 系统实现主菜单:选择 1:打印当前所有用户选择 2:打印当前所有用户记录(格式化后)选择 3:打印用户名和用户 ID选择 4:打印用户名和用户 ID(格式化后)选择

6、5:查询特定用户没有输入关键字和输入关键字没有记录:查找到记录:选择 6:添加用户添加成功:用户名无效情况:用户名只能是数字或字母,用户名不能为空,密码无效:密码不能小于,密码不能为空,密码只能是数字或字母,密码必须和确认密码相同用户 ID 无效:用户 ID 不能为空,用户 ID 不能小于,用户 ID 只能为数字组 ID 无效:组 ID 不能为空,组 ID 不能小于,组 ID 只能为数字登录 shell 无效:shell 只能是 bash,sh,kash,csh 中的一种,shell 不能空选择 7:删除用户查找用户 ID 存在,是否要删除选 Y,删除成功:用户 ID 不存在和没有输入用户 I

7、D 情况:用户 ID 存在,在确认删除选 N 和其他字符是退出:选择 Q:退出不正确选择:五 代码实现1)主菜单代码#! /bin/bash#删除用户clearecho “ 用户删除 “echo “=“while truedo read -p “输入用户 ID:“ useridsif( test expr match “$userids“ “0-9*“ -ne expr length “$userids“ ) thenecho “输入的用户 ID 只能是数字,请重新输入“elif ( test -z “$userids“ ) thenecho “用户 ID 不能为空“else breakfid

8、onegetuserid=$( awk -F : $3 = “$userids“ print $3 passwd )if ( test $getuserid ) then read -p “是否要删除(Y/N):“ ackif (test “$ack“ = “Y“ ) thensed -i /“$userids“/d passwdif ( test $? -eq 0) thenecho “删除成功“elseecho “删除失败“breakfi else breakfielse echo “用户不存在 “fi2)用户添加代码#! /bin/bashclear#用户名echo “ 新用户添加 “e

9、cho “=“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“ ) thenecho “用户名不能为空 ,请重新输入用户名:“else breakfidone#用户密码 while truedo read -p “请输入密码:“ passwdif ( test e

10、xpr match “$passwd“ “0-9a-zA-Z*“ -ne expr length “$passwd“ ) thenecho “用户密码只能为数字或字母,情重新输入密码“elif ( test -z “$passwd“ ) thenecho “用户密码不能为空,请输入密码“elif ( test expr length “$passwd“ -lt 6 ) thenecho “密码长度不能小于 6“else read -p “请输入确认密码:“ ackpwif(test “$passwd“ = “$ackpw“ ) thenbreakelseecho “两次的密码不匹配“fifid

11、one#用户 IDwhile truedo read -p “请输入用户 ID:“ useridif ( test expr match “$userid“ “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:“ gro

12、upidif ( test expr 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 “请输入登录 shell(bash,sh kash,csh):“ shellnameif

13、(test “$shellname“ != “bash“ -a “$shellname“ != “sh“ -a “$shellname“ != “kash“ -a “$shellname“ != “csh“ ) thenecho “你输入的 shell 名不存在本系统中,请重新输入“else breakfidone#添加用户userinfo=“$username:$passwd:$userid:$groupid:$username:/home/$username:/bin/$shellname“if ( test $? -ne 1 ) thenecho $userinfo passwdif (

14、 test $? -eq 0 ) thenecho “用户添加成功“elseecho “用户添加失败“fifi3)用户删除代码#! /bin/bash#删除用户clearecho “ 用户删除 “echo “=“while truedo read -p “输入用户 ID:“ useridsif( test expr match “$userids“ “0-9*“ -ne expr length “$userids“ ) thenecho “输入的用户 ID 只能是数字,请重新输入“elif ( test -z “$userids“ ) thenecho “用户 ID 不能为空“else bre

15、akfidonegetuserid=$( awk -F : $3 = “$userids“ print $3 passwd )if ( test $getuserid ) then read -p “是否要删除(Y/N):“ ackif (test “$ack“ = “Y“ ) thensed -i /“$userids“/d passwdif ( test $? -eq 0) thenecho “删除成功“elseecho “删除失败“breakfi else breakfielse echo “用户不存在 “fi六 心得体会在本次 shell 大作业中,学习了很多知识,掌握的很多 Linux 的相关命令,同时也对Linux 有了更深的了解,在 shell 编程中也找到了一些技巧,加深了对 shell 编程的能力和认识。这也对自己以后的学习 Linux 知识更见有帮助。在实现这些功能时,边学习边尝试,查阅相关知识和书本。在此期间虽然有些烦躁,但是能够实现功能也是一件很快乐的事。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报