Linux编程用户信息管理.docx

上传人:b****5 文档编号:14680934 上传时间:2023-06-26 格式:DOCX 页数:16 大小:377.07KB
下载 相关 举报
Linux编程用户信息管理.docx_第1页
第1页 / 共16页
Linux编程用户信息管理.docx_第2页
第2页 / 共16页
Linux编程用户信息管理.docx_第3页
第3页 / 共16页
Linux编程用户信息管理.docx_第4页
第4页 / 共16页
Linux编程用户信息管理.docx_第5页
第5页 / 共16页
Linux编程用户信息管理.docx_第6页
第6页 / 共16页
Linux编程用户信息管理.docx_第7页
第7页 / 共16页
Linux编程用户信息管理.docx_第8页
第8页 / 共16页
Linux编程用户信息管理.docx_第9页
第9页 / 共16页
Linux编程用户信息管理.docx_第10页
第10页 / 共16页
Linux编程用户信息管理.docx_第11页
第11页 / 共16页
Linux编程用户信息管理.docx_第12页
第12页 / 共16页
Linux编程用户信息管理.docx_第13页
第13页 / 共16页
Linux编程用户信息管理.docx_第14页
第14页 / 共16页
Linux编程用户信息管理.docx_第15页
第15页 / 共16页
Linux编程用户信息管理.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Linux编程用户信息管理.docx

《Linux编程用户信息管理.docx》由会员分享,可在线阅读,更多相关《Linux编程用户信息管理.docx(16页珍藏版)》请在冰点文库上搜索。

Linux编程用户信息管理.docx

Linux编程用户信息管理

一绪论

§1.1设计背景

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。

Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

它主要用于基于Intelx86系列CPU的计算机上.这个系统是由全世界各地的成千上万的程序员设计和实现的。

§1.2设计目的

在Linux系统的/etc目录下有这样一个文件passwd,该文件里包含系统中所有用户信息的记录,记录里包含每个用户的如下信息:

用户名、密码、用户ID、组ID、用户全名、用户主目录和用户登录所用的shell.请设计一个脚本(shell)程序能实现增加、删除、查找和显示特定用户信息的功能。

你们可以通过创建一些UNIX/LINUXshell脚本文件来满足以上需求。

二需求分析

§2.1系统概述

§2.1。

1任务概述

Linux作为多用户、多任务的操作系统,其系统资源是所有用户共享的。

对用户的管理是操作系统的重点.LINUX课程设计要用shell编程实现,将理论学习付诸实践。

设计一个脚本(shell)程序能实现增加、删除、查找和显示特定用户信息的功能。

§2。

1。

2需求规定

程序要包括四个文件,即menu,add,delete,passwd四个文件.passwd文件是用来保存用户信息;menu文件是主菜单,要求运行的时候能显示一个菜单供用户选择;addusers文件是用来增加信息;deluser文件是用来删除信息。

在主Shell脚本文件里(必须以menu命名)要有一个多操作选项的菜单以便用户从中选择。

对于任务6和7,需要编写单独的Shell脚本文件(必须分别命名为addusers和deluser)并且在主脚本menu文件中调用这些脚本文件。

§2。

2功能需求

在主Shell脚本文件里(必须以menu命名)要有一个多操作选项的菜单以便用户从中选择.在不同任务的中,这些操作能自动实现以下功能:

1、在屏幕上显示当前所有用户的记录

2、在屏幕上显示当前所有用户(经过格式化和排序的)的记录

3、只在屏幕上显示用户名和用户ID

4、只在屏幕上显示(经过格式化和排序的)用户名和用户ID

5、查询并显示特定用户的记录

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:

打印当前所有用户记录(格式化后)

选择3:

打印用户名和用户ID

选择4:

打印用户名和用户ID(格式化后)

选择5:

查询特定用户

没有输入关键字和输入关键字没有记录:

查找到记录:

选择6:

添加用户

添加成功:

用户名无效情况:

用户名只能是数字或字母,用户名不能为空,

密码无效:

密码不能小于6,密码不能为空,密码只能是数字或字母,密码必须和确认密码相同

用户ID无效:

用户ID不能为空,用户ID不能小于500,用户ID只能为数字

组ID无效:

组ID不能为空,组ID不能小于500,组ID只能为数字

登录shell无效:

shell只能是bash,sh,kash,csh中的一种,shell不能空

选择7:

删除用户

查找用户ID存在,是否要删除选Y,删除成功:

用户ID不存在和没有输入用户ID情况:

用户ID存在,在确认删除选N和其他字符是退出:

选择Q:

退出

不正确选择:

五代码实现

1)主菜单代码

#!

/bin/bash

#删除用户

clear

echo"用户删除”

echo"========================="

whiletrue

do

read-p"输入用户ID:

”userids

if(test`exprmatch"$userids"”[0—9]*”`—ne`exprlength”$userids”`)then

echo"输入的用户ID只能是数字,请重新输入”

elif(test-z”$userids")then

echo"用户ID不能为空"

else

break

fi

done

getuserid=$(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$?

-eq0)then

echo”删除成功”

else

echo”删除失败"

break

fi

else

break

fi

else

echo”用户不存在"

fi

2)用户添加代码

#!

/bin/bash

clear

#用户名

echo”新用户添加"

echo"=============================="

whiletrue

do

echo—n"请输入用户名:

"

readusername

a=`exprmatch"$username”"[0-9a—zA—Z]*"`

b=`exprlength”$username”`

if(test$a—ne$b)then

echo”用户名只能是数字或字母,请重新输入用户名:

"

elif(test-z"$username”)then

echo"用户名不能为空,请重新输入用户名:

else

break

fi

done

#用户密码

whiletrue

do

read—p"请输入密码:

"passwd

if(test`exprmatch"$passwd”"[0-9a—zA—Z]*"`—ne`exprlength"$passwd”`)then

echo”用户密码只能为数字或字母,情重新输入密码”

elif(test—z”$passwd”)then

echo”用户密码不能为空,请输入密码”

elif(test`exprlength"$passwd"`—lt6)then

echo"密码长度不能小于6"

else

read-p”请输入确认密码:

"ackpw

if(test"$passwd"="$ackpw")then

break

else

echo"两次的密码不匹配”

fi

fi

done

#用户ID

whiletrue

do

read-p"请输入用户ID:

”userid

if(test`exprmatch"$userid""[0-9]*"`-ne`exprlength”$userid”`)then

echo"用户ID只能为数字”

elif(test—z”$userid”)then

echo”用户ID不能为空"

elif(test$userid-lt500)then

echo"用户ID不能小于500,请重新输入”

else

break

fi

done

#组ID

whiletrue

do

read-p”请输入组ID:

”groupid

if(test`exprmatch"$groupid”"[0—9]*"`—ne`exprlength"$groupid”`)then

echo”组ID只能为数字"

elif(test-z”$groupid")then

echo"组ID不能为空,请重新输入"

elif(test$groupid-lt500)then

echo”组ID不能小于500,请重新输入”

else

break

fi

done

#登录shell

whiletrue

do

read—p"请输入登录shell(bash,shkash,csh):

"shellname

if(test"$shellname”!

="bash”—a”$shellname"!

=”sh”—a”$shellname”!

="kash"-a"$shellname”!

=”csh”)then

echo”你输入的shell名不存在本系统中,请重新输入”

else

break

fi

done

#添加用户

userinfo=”$username:

$passwd:

$userid:

$groupid:

$username:

/home/$username:

/bin/$shellname”

if(test$?

—ne1)then

echo$userinfo〉>passwd

if(test$?

—eq0)then

echo"用户添加成功"

else

echo”用户添加失败"

fi

fi

3)用户删除代码

#!

/bin/bash

#删除用户

clear

echo"用户删除”

echo”========================="

whiletrue

do

read-p"输入用户ID:

”userids

if(test`exprmatch”$userids”"[0-9]*"`-ne`exprlength"$userids”`)then

echo"输入的用户ID只能是数字,请重新输入"

elif(test-z"$userids")then

echo”用户ID不能为空”

else

break

fi

done

getuserid=$(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$?

—eq0)then

echo”删除成功"

else

echo”删除失败"

break

fi

else

break

fi

else

echo”用户不存在"

fi

六心得体会

在本次shell大作业中,学习了很多知识,掌握的很多Linux的相关命令,同时也对Linux有了更深的了解,在shell编程中也找到了一些技巧,加深了对shell编程的能力和认识。

这也对自己以后的学习Linux知识更见有帮助。

在实现这些功能时,边学习边尝试,查阅相关知识和书本。

在此期间虽然有些烦躁,但是能够实现功能也是一件很快乐的事。

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

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2