




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、一 緒論§1.1設(shè)計背景Linux是一套免費使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。它主要用于基于Intel x86系列CPU的計算機上。這個系統(tǒng)是由全世界各地的成千上萬的程序員設(shè)計和實現(xiàn)的。§1.2設(shè)計目的在Linux系統(tǒng)的/etc目錄下有這樣一個文件passwd,該文件里包含系統(tǒng)中所有用戶信息的記錄,記錄里包含每個用戶的如下信息:用戶名、密碼、用戶ID、組ID、用戶全名、用戶主目錄和用戶登錄所用的shell。請設(shè)
2、計一個腳本(shell)程序能實現(xiàn)增加、刪除、查找和顯示特定用戶信息的功能。你們可以通過創(chuàng)建一些UNIX/LINUX shell 腳本文件來滿足以上需求。二 需求分析§2.1系統(tǒng)概述§2.1.1 任務(wù)概述Linux作為多用戶、多任務(wù)的操作系統(tǒng),其系統(tǒng)資源是所有用戶共享的。對用戶的管理是操作系統(tǒng)的重點。LINUX課程設(shè)計要用shell編程實現(xiàn),將理論學(xué)習(xí)付諸實踐。設(shè)計一個腳本(shell)程序能實現(xiàn)增加、刪除、查找和顯示特定用戶信息的功能。§2.1.2需求規(guī)定程序要包括四個文件,即menu,add,delete,passwd四個文件。passwd文件是用來保存用戶信
3、息;menu文件是主菜單,要求運行的時候能顯示一個菜單供用戶選擇;addusers文件是用來增加信息;deluser文件是用來刪除信息。在主Shell腳本文件里(必須以 menu 命名)要有一個多操作選項的菜單以便用戶從中選擇。對于任務(wù)6和7,需要編寫單獨的Shell腳本文件(必須分別命名為addusers和deluser)并且在主腳本menu文件中調(diào)用這些腳本文件。§2.2功能需求在主Shell腳本文件里(必須以 menu 命名)要有一個多操作選項的菜單以便用戶從中選擇。在不同任務(wù)的中,這些操作能自動實現(xiàn)以下功能:1、 在屏幕上顯示當(dāng)前所有用戶的記錄2、 在屏幕上顯示當(dāng)前所有用戶(
4、經(jīng)過格式化和排序的)的記錄3、 只在屏幕上顯示用戶名和用戶ID4、 只在屏幕上顯示(經(jīng)過格式化和排序的)用戶名和用戶ID5、 查詢并顯示特定用戶的記錄6、 往passwd文件里增加新的用戶記錄7、 從passwd文件里刪除某個用戶記錄你可以使用UNIX/LINUX中一些比較簡單的命令或命令組合來執(zhí)行1、2、3、4、5的任務(wù)。對于任務(wù)6和7,你需要編寫單獨的Shell腳本文件(必須分別命名為addusers和deluser)并且在你的主腳本menu文件中調(diào)用這些腳本文件。三 系統(tǒng)設(shè)計§3.1結(jié)構(gòu)層次圖§3.2.運行流程 (1)總運行流程(2)addusers模塊運行流程(3)
5、deluser模塊用戶運行流程四 系統(tǒng)實現(xiàn)主菜單:選擇1:打印當(dāng)前所有用戶選擇2:打印當(dāng)前所有用戶記錄(格式化后)選擇3:打印用戶名和用戶ID選擇4:打印用戶名和用戶ID(格式化后)選擇5:查詢特定用戶沒有輸入關(guān)鍵字和輸入關(guān)鍵字沒有記錄:查找到記錄:選擇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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家具托管協(xié)議書范本
- 餐飲加盟店選址評估合同范本
- 環(huán)保產(chǎn)業(yè)項目投資與運營合作協(xié)議范本
- 倉儲物流倉儲管理員及貨物保險合同
- 瓷磚設(shè)計與生產(chǎn)定制服務(wù)協(xié)議
- 餐飲加盟店加盟店品牌管理與市場拓展合同
- 擔(dān)保合同法律風(fēng)險及應(yīng)對措施
- 草原草原土地流轉(zhuǎn)及承包經(jīng)營合同樣本
- 峽谷橋梁風(fēng)振響應(yīng)監(jiān)測
- ERAS快速康復(fù)之護理運用
- 2025年安全生產(chǎn)月主題培訓(xùn) (編號30)
- 2024-2025學(xué)年浙江省寧波市鎮(zhèn)海中學(xué)高二下學(xué)期期中考試數(shù)學(xué)試卷(含答案)
- 外墻蜘蛛人合同協(xié)議
- 2025盤錦輔警考試題庫
- 水廠維修工程施工方案
- 2025年考研政治《毛概》必考辨析題庫及答案大全
- 2025年春季安全教育主題班會教育記錄
- 醫(yī)療行業(yè)上云用云研究報告2024
- 融資擔(dān)保行業(yè)2024年信用回顧與2025年展望 -新世紀
- 曹楊二中自招數(shù)學(xué)試卷
- (新疆一模)2025屆高三高考適應(yīng)性檢測分學(xué)科第一次模擬考試 生物試卷(含答案解析)
評論
0/150
提交評論