




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、一 緒論§1.1設計背景Linux是一套免費使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統(tǒng)。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩(wěn)定的多用戶網絡操作系統(tǒng)。它主要用于基于Intel x86系列CPU的計算機上。這個系統(tǒng)是由全世界各地的成千上萬的程序員設計和實現(xiàn)的。§1.2設計目的在Linux系統(tǒng)的/etc目錄下有這樣一個文件passwd,該文件里包含系統(tǒng)中所有用戶信息的記錄,記錄里包含每個用戶的如下信息:用戶名、密碼、用戶ID、組ID、用戶全名、用戶主目錄和用戶登錄所用的shell。請設
2、計一個腳本(shell)程序能實現(xiàn)增加、刪除、查找和顯示特定用戶信息的功能。你們可以通過創(chuàng)建一些UNIX/LINUX shell 腳本文件來滿足以上需求。二 需求分析§2.1系統(tǒng)概述§2.1.1 任務概述Linux作為多用戶、多任務的操作系統(tǒng),其系統(tǒng)資源是所有用戶共享的。對用戶的管理是操作系統(tǒng)的重點。LINUX課程設計要用shell編程實現(xiàn),將理論學習付諸實踐。設計一個腳本(shell)程序能實現(xiàn)增加、刪除、查找和顯示特定用戶信息的功能。§2.1.2需求規(guī)定程序要包括四個文件,即menu,add,delete,passwd四個文件。passwd文件是用來保存用戶信
3、息;menu文件是主菜單,要求運行的時候能顯示一個菜單供用戶選擇;addusers文件是用來增加信息;deluser文件是用來刪除信息。在主Shell腳本文件里(必須以 menu 命名)要有一個多操作選項的菜單以便用戶從中選擇。對于任務6和7,需要編寫單獨的Shell腳本文件(必須分別命名為addusers和deluser)并且在主腳本menu文件中調用這些腳本文件。§2.2功能需求在主Shell腳本文件里(必須以 menu 命名)要有一個多操作選項的菜單以便用戶從中選擇。在不同任務的中,這些操作能自動實現(xiàn)以下功能:1、 在屏幕上顯示當前所有用戶的記錄2、 在屏幕上顯示當前所有用戶(
4、經過格式化和排序的)的記錄3、 只在屏幕上顯示用戶名和用戶ID4、 只在屏幕上顯示(經過格式化和排序的)用戶名和用戶ID5、 查詢并顯示特定用戶的記錄6、 往passwd文件里增加新的用戶記錄7、 從passwd文件里刪除某個用戶記錄你可以使用UNIX/LINUX中一些比較簡單的命令或命令組合來執(zhí)行1、2、3、4、5的任務。對于任務6和7,你需要編寫單獨的Shell腳本文件(必須分別命名為addusers和deluser)并且在你的主腳本menu文件中調用這些腳本文件。三 系統(tǒng)設計§3.1結構層次圖§3.2.運行流程 (1)總運行流程(2)addusers模塊運行流程(3)
5、deluser模塊用戶運行流程四 系統(tǒng)實現(xiàn)主菜單:選擇1:打印當前所有用戶選擇2:打印當前所有用戶記錄(格式化后)選擇3:打印用戶名和用戶ID選擇4:打印用戶名和用戶ID(格式化后)選擇5:查詢特定用戶沒有輸入關鍵字和輸入關鍵字沒有記錄:查找到記錄:選擇6:添加用戶添加成功:用戶名無效情況:用戶名只能是數(shù)字或字母,用戶名不能為空,密碼無效:密碼不能小于,密碼不能為空,密碼只能是數(shù)字或字母,密碼必須和確認密碼相同用戶ID無效:用戶ID不能為空,用戶ID不能小于,用戶ID只能為數(shù)字組ID無效:組ID不能為空,組ID不能小于,組ID只能為數(shù)字登錄shell無效:shell只能是bash,sh,kas
6、h,csh中的一種,shell不能空選擇7:刪除用戶查找用戶ID存在,是否要刪除選Y,刪除成功:用戶ID不存在和沒有輸入用戶ID情況:用戶ID存在,在確認刪除選N和其他字符是退出: 選擇Q:退出不正確選擇:五 代碼實現(xiàn)1)主菜單代碼#! /bin/bash#刪除用戶clearecho " 用戶刪除 "echo "="while truedo read -p "輸入用戶ID:" useridsif( test expr match "$userids" "0-9*" -ne expr length
7、 "$userids" ) then echo "輸入的用戶ID只能是數(shù)字,請重新輸入"elif ( test -z "$userids" ) then echo "用戶ID不能為空"else breakfidonegetuserid=$( awk -F ':' ' $3 = "'$userids'" print $3 ' passwd )if ( test $getuserid ) then read -p "是否要刪除(Y/N):&q
8、uot; 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 &
9、quot;="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 "用戶名只能是數(shù)字或字母,請重新輸入用戶名:"elif ( test -z "$username" ) then echo "用戶名不能為空,請重新輸入用戶名:&
10、quot;else breakfidone#用戶密碼 while truedo read -p "請輸入密碼:" passwd if ( test expr match "$passwd" "0-9a-zA-Z*" -ne expr length "$passwd" ) thenecho "用戶密碼只能為數(shù)字或字母,情重新輸入密碼"elif ( test -z "$passwd" ) thenecho "用戶密碼不能為空,請輸入密碼"elif ( test
11、 expr length "$passwd" -lt 6 ) thenecho "密碼長度不能小于6"else read -p "請輸入確認密碼:" ackpwif(test "$passwd" = "$ackpw" ) then breakelseecho "兩次的密碼不匹配"fifidone#用戶IDwhile truedo read -p "請輸入用戶ID:" useridif ( test expr match "$userid"
12、; "0-9*" -ne expr length "$userid" ) thenecho "用戶ID只能為數(shù)字"elif ( test -z "$userid") thenecho "用戶ID不能為空"elif ( test $userid -lt 500 ) thenecho "用戶ID不能小于500,請重新輸入"else breakfidone#組IDwhile truedo read -p "請輸入組ID:" groupidif ( test ex
13、pr match "$groupid" "0-9*" -ne expr length "$groupid" ) thenecho "組ID只能為數(shù)字"elif ( test -z "$groupid" ) thenecho "組ID不能為空, 請重新輸入"elif ( test $groupid -lt 500 ) thenecho "組ID不能小于500,請重新輸入"elsebreakfidone#登錄shellwhile truedoread -p &
14、quot;請輸入登錄shell(bash,sh kash,csh):" shellnameif (test "$shellname" != "bash" -a "$shellname" != "sh" -a "$shellname" != "kash" -a "$shellname" != "csh" ) thenecho "你輸入的shell名不存在本系統(tǒng)中,請重新輸入"else breakfidone#
15、添加用戶userinfo="$username:$passwd:$userid:$groupid:$username:/home/$username:/bin/$shellname"if ( test $? -ne 1 ) thenecho $userinfo >> passwdif ( test $? -eq 0 ) then echo "用戶添加成功"elseecho "用戶添加失敗" fifi3)用戶刪除代碼#! /bin/bash#刪除用戶clearecho " 用戶刪除 "echo "
16、;="while truedo read -p "輸入用戶ID:" useridsif( test expr match "$userids" "0-9*" -ne expr length "$userids" ) then echo "輸入的用戶ID只能是數(shù)字,請重新輸入"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 &q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農業(yè)領域碳匯計量系統(tǒng)研究報告:技術市場與未來趨勢
- 物流效率提升-洞察及研究
- 退換貨管理優(yōu)化-洞察及研究
- 廊坊衛(wèi)生職業(yè)學院《離散數(shù)學B》2023-2024學年第一學期期末試卷
- 江蘇工程職業(yè)技術學院《品牌形象策劃與設計》2023-2024學年第一學期期末試卷
- 河池學院《園林建筑設計(一)》2023-2024學年第一學期期末試卷
- 齊齊哈爾工程學院《智能制造導論》2023-2024學年第一學期期末試卷
- 2025年制造業(yè)數(shù)據治理在智能工廠生產數(shù)據分析中的應用研究
- 2025年制造業(yè)工業(yè)互聯(lián)網安全與隱私保護研究與實踐
- 載荷運輸效率-洞察及研究
- 2025年人教版七年級數(shù)學下冊期末測試卷
- 人文英語4-005-國開機考復習資料
- 公司安全事故隱患內部舉報、報告獎勵制度
- 洪恩識字配套字庫完整版識字啟蒙200字-生字組詞句子完整版可打印-點讀指讀
- 城市軌道交通列車運行圖編制課件
- 吊車施工專項施工方案
- (新版)國際法配套練習題庫500題(含各題型)
- IOF骨質疏松風險一分鐘測試題
- 假肢使用課件
- 房地產殘余價值估價報告
- 2016河南省通用安裝工程預算定額-章節(jié)說明
評論
0/150
提交評論