数学计算机学院
Linux操作系统
课程设计说明书
题 目: shell编程户信息理(模拟)
专 业:
班 级:
学 号:
姓 名:
指导老师:
2012年 X 月 X 日
课程设计目
掌握linux操作系统中shell脚编程技术中:变量定义变量循环控制结构条件选择结构户交互文件读写文容分析linux重命令等验证学生shell脚编程掌握情况求学生够利shell脚编程实现较基功
Linux作户务操作系统系统资源户享户理操作系统重点LINUX课程设计shell编程实现理学付诸实践设计脚(shell)程序实现增加删查找显示特定户信息功
二课程设计容
Shell脚文件里(必须 menu 命名)操作选项菜单便户中选择务中操作动实现功:
1) 屏幕显示前户记录
2) 屏幕显示前户(格式化排序)记录
3) 屏幕显示户名户ID
4) 屏幕显示(格式化排序)户名户ID
5) 查询显示特定户记录
6) passwd文件里增加新户记录
7) passwd文件里删某户记录
目录四文件分menupasswdadddelete中 menu文件中程序完成12345功外写add脚文件delete脚文件分实现选项67户做选择选操作完成次显示菜单供户做步选择while循环case条件语句配合完成操作
三课程设计基原理功
1功图
显示前户记录
显示前户格式化记录
显示户名户ID
显示格式化户名户ID
查找指定户信息
添加户信息
删户信息
户信息菜单
2流程图
221菜单
222 add模块
223 delete模块
四设计步骤
1编写menuadddeleteshell脚passwd文件
(menu add delete 文件网载改动少许符合设计求)
2目录添加四文件分menushpasswdaddshdeletesh090510221空文件夹作新建户目录
直接whpuser新建指令添加:
vi menush
vi addsh
vi deletesh
vi passwd
3执行menush脚
增加权限
chmod +x menush
menush
执行效果截图:
4输入错误截图:
5选择菜单1时显示结果图示:
6选择菜单2时显示结果图示:
7选择菜单3时显示结果图示:
8选择菜单4时显示结果图示:
9选择菜单5输入需查询户名时显示结果图示:
10选择菜单6显示结果图示:
完成添加户调菜单2够新添加户mycount信息条目
11选择菜单7通户ID删户显示结果图示:
完成删户调菜单2够新添加户mycount信息条目
五源代码
1menu脚框架
# binbash
#声明全局变量
dataSource'passwd'
homePath''
addUsersaddsh
deleteUsersdeletesh
CheckDataSourceFileExist()
{
if [ f dataSource ]
then
#文件存
return 0
else
#文件存
clear
echo n 警告 dataSource 存请确认
read
return 1
fi
}
choiceF
while [ choice Q a choice q ]
do
CheckDataSourceFileExist
if [ ne 1 ]
then
clear
echo 户信息理菜单
echo
echo 1显示前记录
echo 2格式化显示前记录
echo 3显示户名户ID
echo 4格式化显示户名ID
echo 5查询特定户信息
echo 6添加新户
echo 7删户
echo Q退出
echo n 选择
read choice
#作清readstringEmpty时候引发bash参数错误
if [ z choice ]
then
choiceempty
fi
clear
if [ choice empty ]
then
echo 选项尚未选择
else
case choice in
1) CheckDataSourceFileExist
if [ ne 1 ]
then
echo 前户信息示
echo 户名 密码 ID GID 说明 工作目录 登录Shell
cat dataSource | tr | more
fi
2) CheckDataSourceFileExist
if [ ne 1 ]
then
echo 前户信息示
echo e 户名\t密码\tID\tGID\t说明\t工作目录\t登录Shell
sort k 1 dataSource | awk F '{print 1 \t 2 \t 3 \t 4 \t 5 \t 6 \t 7 \t}' | more
fi
3) CheckDataSourceFileExist
if [ ne 1 ]
then
echo 前户户名户ID示
echo e 户名ID
awk F '{print 1 3}' dataSource | more
fi
4) CheckDataSourceFileExist
if [ ne 1 ]
then
echo 前户户名户ID示
echo e 户名 \t ID
awk F '{print 1 \t 3}' dataSource | more
fi
5) CheckDataSourceFileExist
if [ ne 1 ]
then
keyWords
while [ z keyWords ]
do
echo n 输入搜索关键词
read keyWords
if [ z keyWords ]
then
echo 搜索关键词空请重新输入
fi
done
CheckDataSourceFileExist
if [ ne 1 ]
then
grep i keyWords dataSource
if [ eq 1 ]
then
echo 遗憾dataSource文件中存 keyWords 致信息
fi
fi
fi
6) addUsers
7) deleteUsers
Q) printf 程序已退出
q) printf 程序已退出
*) echo choice :选项默认提供功请确认
esac
fi
echo n 确认??
read
fi
done
2add脚编
该脚实现户交互式添加户信息包括需添加户:户名户密码户ID组ID全名户家目录登录shell类型项信息需进行单独读取必验证
clear
isContinuey
userName
while [ isContinue y o isContinue Y ]
do
#户名处理输入致字符串长度0止
userName
while [ z userName ]
do
echo n 户名
read userName
if [ z userName ]
then
echo 错误户名空请重新输入
continue
fi
if [ `expr match userName [azAZ][09azAZ]*` ne `expr length userName` ]
then
echo 错误户名非数字头字符数字组成请重新输入
userName
continue
fi
done
#密码处理:1验空3密码长度6位写字母数字控制字符组成2验两次输入致性
passWord
passWordAgain
while [ z passWord ]
do
echo n 密码
read passWord
if [ z passWord ]
then
echo 错误密码空请重新输入
continue
fi
if [ `expr length passWord` ne 6 ]
then
echo 密码长度6位请重新输入
passWord
continue
fi
if [ `expr match passWord [09azAZ]*` ne `expr length passWord` ]
then
echo 密码写字母数字控制字符组成请重新输入
passWord
continue
fi
echo n 请输入次密码:
read passWordAgain
if [ passWordAgain passWord ]
then
echo 两次输入密码样请重新输入
passWord
continue
fi
done
#户UID输入处理UID数字般非超级户ID等500
uID
while [ z uID ]
do
echo n 户UID
read uID
if [ z uID ]
then
echo 错误户UID空请重新输入
continue
fi
if [ `expr match uID [09]*` ne `expr length uID` ]
then
echo 错误户UID必须数字请重新输入
uID
continue
fi
if [ uID lt 500 o uID gt 60000 ]
then
echo 错误般非超级户ID范围500~60000请重新输入
uID
continue
fi
done
#户组GID处理
gID
while [ z gID ]
do
echo n 户组GID
read gID
if [ z gID ]
then
echo 错误户GID空请重新输入
continue
fi
if [ `expr match gID [09]*` ne `expr length gID` ]
then
echo 错误户GID必须数字请重新输入
gID
continue
fi
if [ gID lt 500 o gID gt 60000 ]
then
echo 错误户组ID范围500~60000请重新输入
gID
continue
fi
done
echo n 说明read note
#bashshcshksh
shellVersion
while [ z shellVersion ]
do
echo n 登录SHELL(bashshcshksh)
read shellVersion
if [ shellVersion bash a shellVersion sh a shellVersion csh a shellVersion ksh ]
then
echo 输入Shell类型shellVersion系统支持范围请重新输入
shellVersion
fi
done
echo n 户工作目录
mkdir homeuserName
if [ eq 0 ]
then
echo userName 成功创建
fi
userInfouserNamepassWorduIDgIDnoteuserNameshellVersion
echo userInfo >> dataSource
if [ eq 0 ]
then
echo userName户信息添加成功
else
echo userName户信息添加失败
fi
echo n 否继续添加户??(yn)
read isContinue
done
3delete脚
delete脚通户ID找passwd文件中应户ID记录删时考虑户误操作真正删户信息前进行户确认果户确认删户信息记录passwd中删需时文件进行辅助删效果保存该时文件中户确认删时文件容写入passwd文件否者保持passwd容变
clear
isContinuey
userName
while [ isContinue y o isContinue Y ]
do
while [ isContinue y o isContinue Y ]
do
echo n 输入户ID
read userID
if [ z userID ]
then
echo 户ID空请重新输入
isContinueY
continue
fi
CheckDataSourceFileExist
if [ ne 1 ]
then
deleteUser(awk F '1 'userName' { print 0 }' dataSource)
if [ deleteUser ]
then
echo 户信息: deleteUser
echo n 否删?(yn)
read isContinue
if [ z isContinue ]
then
isContinueN
fi
if [ isContinue y o isContinue Y ]
then
CheckDataSourceFileExist
if [ ne 1 ]
then
rowID(grep n deleteUser dataSource | awk F '{print 1}')
sed e rowID d dataSource > tempFile
cat tempFile > dataSource
rm tempFile
fi
if [ eq 0 ]
then
echo 记录删
else
echo 系统错误删失败
fi
isContinueN
fi
else
echo 输入 userID 户存
isContinueN
fi
fi
done
if [ n userName ]
then
echo n 否继续删户??(yn)
read isContinue
if [ z isContinue ]
then
isContinueN
fi
fi
done
4passwd原始脚
090510221x10001000somethinghome090510221binbash
maozongliangx10011001somethinghomemaozongliangbinbash
六 课程设计心体会
课设开始时课程设计务说明书然选择第题目说第较简单Linux会仔细说明书第题目感觉果JavaC++写写代码 ubuntu中Shell命令写感觉手百度希百度找代码步骤完全没找
开始课设搜索没找实验室里做知道手参加培训时间短心里焦急询问学做题目找会做等做完教心里稍安感觉光等教做干事学教轻松做第二题目务书开始第二题目发现提示非常详细样起做第二题目样做程中学基础知识事实做第二题目程中学关Linux基础知识然步骤指导书步步学会Linux操作系统中基命令熟悉ubuntu操作系统文件系统细节
周终等学援助面前演示遍交周基础知识铺垫步骤记住晚重做遍然问题流程知道第二天做遍代码更改然代码网载通修改懂shell编程知识发现C语言编程语言通处修改代码提供方便帮助两学教流程感觉第题目真第二简单然花天时间整理实报告
通次课设学会Shell命令方法熟悉ubuntu操作系统操作环境解Shell编程基特点等等感觉周学东西前月基完成课设务达课设目
七参考资料
[1] ubuntu Shell编程基础 Ubuntu wiki站
[2] ubuntu Bind9安装设置指南 Ubuntu wiki站
[3] W3cschool PHP 教程 W3C
[4] LinuxShell语言编程百度文库 刘桂海
[5] 吴恒奎Linux 指令速查手册 民邮电出版社 2007年12月
武汉工业学院课程设计
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档