




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux 操作系统 课程设计说明书 题题 目 目 ShellShell 编程编程 用户信息管理用户信息管理 专专 业 业 班班 级 级 学学 号 号 姓姓 名 名 指导老师 指导老师 20122012 年年 0606 月月 0808 日日 一 课程设计目的一 课程设计目的 Linux 操作系统 课程设计是网络工程专业的集中实践性环节之一 是学习完 linux 操作系统 课程后进行的一次全面的综合练习 其目的在于加深对 linux 操作系 统的系统管理各方面技术的掌握 使学生更好地把握 linux 操作系统的基础命令 shell 脚本技术以及各种基础服务器的配置和基本应用 类 UNIX 操作系统在网络环境及手持设 备环境下使用极为流行 几乎所有的网络服务器都是运行在类 UNIX 系统之上 基于类 UNIX 裁剪版本的手持设备也在市场中占有极大的比重 因此 对于网络工程专业掌握类 UNIX 操作系统的基本使用方法是相当重要的 而 Linux 就是类 UNIX 中最为流行的一个分 支 鉴于 Linux 的开源和 Linux 开发群的活跃特性 Linux 都是高等院校计算机类专业必 开设的课程 而 Linux 操作系统课程设计能够更好的加强学生在课程学习中各种知识的综 合应用能力和实践经验 二 课程设计内容二 课程设计内容 在主 Shell 脚本文件里 必须以 menu 命名 要有一个多操作选项的菜单以便用户从中选 择 在不同任务的中 这些操作能自动实现以下功能 1 在屏幕上显示当前所有用户的记录 2 在屏幕上显示当前所有用户 经过格式化和排序的 的记录 3 只在屏幕上显示用户名和用户 ID 4 只在屏幕上显示 经过格式化和排序的 用户名和用户 ID 5 查询并显示特定用户的记录 6 往 passwd 文件里增加新的用户记录 7 从 passwd 文件里删除某个用户记录 在目录下有四个文件分别为 menu passwd add delete 注 注 passwd 是自建数据文件 而不是 etc passwd 这个文件 切记 menu add 和 delete 是 shell 脚本文件 三 课程设计需要知识的基本原理及功能简介三 课程设计需要知识的基本原理及功能简介 变量定义 变量使用 循环控制结构 条件选择结构 用户交互 文件读写 文本内 容分析以及 linux 重要命令的使用等 程序要包括四个文件 即 menu add delete passwd 四个文件 passwd 文件是用来保存用户信息 menu 文件是主 菜单 要求运行的时候能显示一个菜单供用户选择 add 文件是用来增加信息 delete 文件 是用来删除信息 在主 Shell 脚本文件里 必须以 menu 命名 要有一个多操作选项的菜 单以便用户从中选择 对于任务 6 和 7 需要编写单独的 Shell 脚本文件 必须分别命名 为 add 和 delete 并且在主脚本 menu 文件中调用这些脚本文件 四 设计步骤 四 设计步骤 1 功能图功能图 显示当前所有用户的记录 显示当前所有用户 经过格式化和排序的 的记录的记录 显示用户名和用户 ID 显示 经过格式化和排序的 用户名和用 户 ID 查询并显示特定用户的记录 添加用户信息 删除用户信息 用户信息主菜单 2 流程图流程图 2 2 1 主菜单主菜单 主菜单 你的选择 功能实现 回车退出 2 2 2 add 模块模块 2 2 3 delete 模块模块 3 截图截图 1 menu 脚本执行后 大概应该呈现为下图所示的情况 主菜单 是否继续删除 进入 delete 界面 输入 ID 是否存在 是否删除 进入主菜单 Y Y Y N N 假如 passwd 文件中的内容如下所示 root x 0 0 root root bin bash linux x 500 500 linux home linux bin bash lianmin x 503 500 lianmin home lianmin bin bash 090510217 x 800 800 liuxy home 090510217 bin bash liuxianyu x 801 801 lxy home liuxianyu bin bash 2 选择菜单 1 时 显示的结果如下图所示 3 选择菜单 2 时 显示的结果如下图所示 4 选择菜单 3 时 显示的结果如下图所示 5 选择菜单 4 时 显示的结果如下图所示 6 选择菜单 5 并输入需要查询的用户名时 显示的结果如下图所示 7 选择菜单 6 显示的结果如下图所示 完成添加用户后 在调用菜单 2 应该能够看到新添加用户 mycount 的信息条目 8 选择菜单 7 通过用户 ID 来删除用户 显示的结果如下图所示 9 选择菜单 q 时 显示的结果如下图所示 五 源代码五 源代码 1 源代码主要思路源代码主要思路 1 menu 主菜单主菜单 无效输入 当用户做了选择且所选的操作完成之后 应再次显示主菜单以供用户做下一步选择 在以 上等待用户做出选择的菜单中 如果用户偶尔输入了一个代码而不是 1 2 3 4 5 6 7 q 或 Q 就有信息提示 请按回车继续 等用户按了回车键 之后 再次显示主菜单供用户做其他选择 查询用户是否存在 先判断是否输入 再判断用户名是否存在 while true do echo 请输入要查询的用户名 read answer echo b answer if test z answer then echo 你还没有输入 continue elif grep i answer dataSource then echo break else echo 你输入的用户不存在 没有找到 answer break fi done 自定义函数 判断 passwd 文件是否存在 如果文件不存在 会显示警告 CheckDataSourceFileExist if f dataSource then 文件存在 return 0 else 文件不存在 clear echo n 警告 dataSource 不存在 请确认 read return 1 fi 2 Add 文件文件 该脚本实现与用户的交互式添加用户信息 包括需要添加用户的 用户名 用户密码 用 户 ID 组 ID 全名 用户家目录 登录 shell 类型 对于每一项信息需要进行单独的读 取和必要验证 此外 我还加入了对于是否继续添加的判断 故添加了 isContinue 已辅 助 对于用户创建的用户名的判断 先判断用户名是否为空 再对于首字母的判断 最后判断 所以字符是不是字母和数字 userName while z userName 判断用户输入一个无效的用户名 do echo n 用户名 read userName if z userName then echo 错误 用户名是不能为空的 请重新输入 continue fi if expr match userName a zA Z 0 9a zA Z ne expr length userName then echo 错误 用户名的只能由非数字打头的字符和数字组成 请重新输入 userName continue fi done 对于用户名密码的判断 判断密码是否为空 且密码长度必须为 6 位的大小写字母 数字 和控制字符组成 然后判断两次输入的用户名和密码是否一样 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 0 9a zA Z 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 范围为 500 60000 且不为空 对于用户组 GID 处理 一般非超级用户的 GID 大等于 500 范围 为 500 60000 且不为空 用户的工作目录默认为 home 用户名 登录权限有 bash sh csh ksh 可以供选择 3 Detele 文件文件 delete 脚本通过用户 ID 找到 passwd 文件中对应用户 ID 的记录 并将其删除 同时要 考虑到用户可能误操作 因此要在真正删除用户信息前 进行用户确认 如果用户不确认 删除 那么就不能将用户信息记录从 passwd 中删除 这就需要一个临时文件 tempFile 进行辅助 将删除后的效果保存于该临时文件中 只有用户确认删除后 再将临时文件 tempFile 内容写入到 passwd 文件 否者保持 passwd 内容不变 此外 我还加入了对于 是否继续删除的判断 故 isContinue 已做辅助 2 源代码原码源代码原码 1 menu 主脚本文件代码主脚本文件代码 bin bash dataSource passwd homePath AddUsers Add sh DeleteUsers Delete sh 自定义函数 判断 passwd 文件是否存在 CheckDataSourceFileExist if f dataSource then 文件存在 return 0 else 文件不存在 clear echo n 警告 dataSource 不存在 请确认 read return 1 fi a 你的选择是 b 输入关键字是 clear while true do CheckDataSourceFileExist echo 信息主菜单 echo 1 打印当前所有记录 echo 2 打印当前所有记录 格式化后 echo 3 打印用户名和用户 ID echo 4 打印 格式化了的 用户名和用户 ID echo 5 查询特定记录 echo 6 增加新记录 echo 7 删除记录 echo q 退出 echo e 你的选择是 等待用户输入 echo read choice echo a choice case choice in 1 CheckDataSourceFileExist awk F print 1 OFS 2 OFS 3 OFS 4 OFS 5 OFS 6 OFS 7 dataSource 2 CheckDataSourceFileExist awk F print 1 t 2 t 3 t 4 t 5 t 6 t 7 dataSource sort 此处对于用户名排序 t 用于格式化 下同 3 CheckDataSourceFileExist awk F print 1 OFS 3 dataSource 4 CheckDataSourceFileExist awk F print 1 t 3 dataSource sort 5 CheckDataSourceFileExist 查询用户是否存在 while true do echo 请输入要查询的用户名 read answer echo b answer if test z answer then echo 你还没有输入 continue elif grep i answer dataSource then echo break else echo 你输入的用户不存在 没有找到 answer break fi done 6 AddUsers 读取 Add sh 文件 7 DeleteUsers 读取 Delete sh 文件 q exit Q exit echo 无效的代码 esac echo 请按回车继续 read answer done 2 Add 脚本文件代码脚本文件代码 bin sh isContinue y userName while isContinue y o isContinue Y do echo 用户信息增加情况 echo echo 输入新用户的具体情况 用户名处理 输入一致到字符串长度不为 0 为止 userName while z userName 判断用户输入一个无效的用户名 do echo n 用户名 read userName if z userName then echo 错误 用户名是不能为空的 请重新输入 continue fi if expr match userName a zA Z 0 9a zA Z 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 0 9a zA Z 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 用户 ID read uID if z uID then echo 错误 用户 UID 是不能为空的 请重新输入 continue fi if expr match uID 0 9 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 Group ID read gID if z gID then echo 错误 用户 GID 是不能为空的 请重新输入 continue fi if expr match gID 0 9 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 bash sh csh ksh shellVersion while z shellVersion do echo n 登录 SHELL bash sh csh ksh read shellVersion if shellVersion bash a shellVersion sh a shellVersion csh a shellVersion ksh then echo 输入的 Shell 类型 shellVersion 不在本系统支持范围内 请重新输入 shellVersion fi done echo n 用户工作目录 sudo mkdir home userName if eq 0 then echo userName 成功创建 fi userInfo userName passWord uID gID note userName shellVersion echo userInfo dataSource if eq 0 then echo userName 用户信息添加成功 else echo userName 用户信息添加失败 fi echo n 是否继续添加其他用户 y n read isContinue done 3 Detele 脚本文件代码脚本文件代码 bin sh isContinue y userName while isContinue y o isContinue Y do while isContinue y o isContinue Y do echo n 输入用户的名称 read userName if z userName then echo 用户名不能为空 请重新输入 isContinue Y continue fi CheckDataSourceFileExist if ne 1 then deleteUser awk F 1 userName print 0 dataSource if deleteUser then echo 目标帐号确认 deleteUser echo n 是否删除该信息 y n read isContinue if z isContinue then isContinue N 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 isContinue N fi else echo 你输入的 userName 用户不存在 isContinue N fi fi done if n userName then echo n 是否继续删除其他用户 y n read isContinue if z isContinue then isContinue N fi fi done 4 passwd 文件文件 root
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国中盐榨菜丝行业市场发展前景及发展趋势与投资战略研究报告
- 中国饲料用鱼粉行业市场前景预测及投资战略研究报告
- 2025年 达州市大竹县乡村职业经理人招聘笔试试题附答案
- 中国远程协作办公行业市场深度研究及投资战略规划报告
- 花叶项目投资可行性研究分析报告(2024-2030版)
- 红外防水摄像机外壳项目投资可行性研究分析报告(2024-2030版)
- 中国有线数字电视增值业务行业市场深度调查评估及投资方向研究报告
- 中国铁路车辆设备行业发展运行现状及发展趋势预测报告
- 钛封头行业深度研究分析报告(2024-2030版)
- 北京消防培训课件
- 高墩柱墩身施工方案
- 2023年甘肃兰州大学网络与继续教育学院人员招聘2人高频考点题库(共500题含答案解析)模拟练习试卷
- 肝内胆管结石详解
- 发电机励磁系统检修与维护
- 2023-2024学年福建省泉州市小学语文六年级期末自测模拟试卷
- GB 29541-2013热泵热水机(器)能效限定值及能效等级
- 控规用地代码
- 2023年上杭县社区工作者招聘考试笔试题库及答案解析
- 2021年曹杨二中自招数学试卷
- 新能源汽车底盘检修全套课件
- 幼儿园大班数学口算练习题可打印
评论
0/150
提交评论