ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:376.15KB ,
资源ID:22790585      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22790585.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Linux编程用户信息管理.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Linux编程用户信息管理.docx

1、Linux编程用户信息管理 一 绪论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、在屏幕上显示当前所有用户(经过格式化和排序的)的记录3、只在屏幕上显示用户

4、名和用户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)deluser模块用户运行流程四 系统实现主菜单:选择1:打印当前所有用户选择2:

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

6、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 $userids ) then echo 输入的用户ID只能是数字,请重新输入elif ( test -z $userids ) then echo 用户ID不能为空else breakfidonege

7、tuserid=$( 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 删除成功 else echo 删除失败 break fi else break fielse echo 用户不存在fi2)用户添加代码#! /bin/bashclear#用户名echo 新用户添加 echo =while trued

8、o 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 用户名不能为空,请重新输入用户名:else breakfidone#用户密码 while truedo read -p 请输入密码: passwd if ( test expr match $passwd 0-9a-zA-Z* -ne e

9、xpr length $passwd ) thenecho 用户密码只能为数字或字母,情重新输入密码elif ( test -z $passwd ) thenecho 用户密码不能为空,请输入密码elif ( test expr length $passwd -lt 6 ) thenecho 密码长度不能小于6else read -p 请输入确认密码: ackpwif(test $passwd = $ackpw ) then breakelseecho 两次的密码不匹配fifidone#用户IDwhile truedo read -p 请输入用户ID: useridif ( test expr

10、 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: groupidif ( test expr match $groupid 0-9* -ne expr length $groupid ) thenecho 组ID只能为数字elif

11、 ( test -z $groupid ) thenecho 组ID不能为空, 请重新输入elif ( test $groupid -lt 500 ) thenecho 组ID不能小于500,请重新输入elsebreakfidone#登录shellwhile truedoread -p 请输入登录shell(bash,sh kash,csh): shellnameif (test $shellname != bash -a $shellname != sh -a $shellname != kash -a $shellname != csh ) thenecho 你输入的shell名不存在本系

12、统中,请重新输入else breakfidone#添加用户userinfo=$username:$passwd:$userid:$groupid:$username:/home/$username:/bin/$shellnameif ( test $? -ne 1 ) thenecho $userinfo passwdif ( test $? -eq 0 ) then echo 用户添加成功elseecho 用户添加失败 fifi3)用户删除代码#! /bin/bash#删除用户clearecho 用户删除 echo =while truedo read -p 输入用户ID: useridsi

13、f( 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 删除成功 else echo 删除失败 break fi else break fielse echo 用户不存在fi六 心得体会在本次shell大作业中,学习了很多知识,掌握的很多Linux的相关命令,同时也对Linux有了更深的了解,在shell编程中也找到了一些技巧,加深了对shell编程的能力和认识。这也对自己以后的学习Linux知识更见有帮助。在实现这些功能时,边学习边尝试,查阅相关知识和书本。在此期间虽然有些烦躁,但是能够实现功能也是一件很快乐的事。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1