Board logo

主題: [其他] [求助]朋友的LINUX作業...orz [打印本頁]

發表人: oldk999    時間: 2013-5-2 11:42 PM     主題: [求助]朋友的LINUX作業...orz

小弟的朋友最近向小弟求助...無奈...小弟從沒摸過LINUX..這幾天自行摸索下只用Shell Script寫出了些許答案(藍色部份)也不知道對不對 , 所以只好上來請求版上各位大大們的協助小弟感激不盡啊

看了 watchme 大大的第2題答案 , 小弟試著寫了第14題 , 如今只剩第15題了 , 希望有大大能相助啊~小弟感激不盡~
在此也感謝 watchme 大大的大力相助

14.        寫一程式檢查某一檔案(/home/tsnien/testfile)(1)是否存在,(2) 如不存在,則建立一個該名稱的空檔案(touch),(3) 如存在的話,判斷它是否為檔案,如是目錄的話,則刪除該目錄,再產生檔案。

if [ -e /home/tsnien/testfile ]; then  

   if [ -d /home/tsnien/testfile ]; then  

      rm -r /home/tsnien/testfile  
      touch  /home/tsnien/testfile  

   fi  

else  
touch  /home/tsnien/testfile  

fi  



15.        請製作ㄧ套帳戶管理系統,至少具有下列功能: (檔名:user_menu,選單功能)
(1) 增加/刪除某一個帳戶(包含變更或刪除密碼,並可選擇群組、Shell 環境)。
(2) 增加/刪除多位帳戶(包含刪除或變更密碼)。
(3) 可查詢某一帳戶的相關訊息,如 Home directory、Shell、以及其他資料。
(4) 可針對帳戶密碼使用週期之設定。

新建使用者具有下列特性:
(1)        每位使用者登入系統後,在終端機螢幕上會顯示單位名稱,以及歡迎詞(格式自行設計)。
(2)        接著,再顯示系統管理者的公告事項(管理者的佈告欄,內容格式自行設計)。
利用 Shell Script 編寫具有選單功能的程式。所增加入帳戶,登入系統後會顯示歡迎詞、帳戶名稱,登出時會顯示歡迎再來(格式自行設計)。

[oldk999 在  2013-5-4 01:18 AM 作了最後編輯]
發表人: watchme    時間: 2013-5-3 09:46 AM

2.
if [ $# = 0 ]; then
        read -p "Source file name? " fn1
        read -p "Destination file name? " fn2
elif [ $# = 1 ]; then
        fn1=$1
        read -p "Destination file name? " fn2
else
        fn1=$1
        fn2=$2
fi

if [ $fn1 = $fn2 ]; then
        echo "nothing to do!"
        exit
fi

if [ ! -f $fn1 ]; then
        echo "file [" $fn1 "] not exist !"
        exit
fi

if [ -f $fn2 ]; then
        echo "file [" $fn2 "] exist"
        read -p "overwrite (Y/n)? " confirm
        if [ "$confirm" == "n" -o "$confirm" == "N" ]; then
                echo "skip cpoy!"
                exit
        fi
fi

cp -f $fn1 $fn2
echo "copy done!"

[watchme 在  2013-5-3 10:11 AM 作了最後編輯]
發表人: watchme    時間: 2013-5-3 11:02 AM

4.
只目前目錄
echo "$(find -maxdepth 1 -type f | wc -l) files"

不限目錄層次(所有子目錄都要算)
echo "$(find -type f | wc -l) files"
發表人: watchme    時間: 2013-5-3 11:09 AM

5.
echo $(who | awk '{print $1}' | sort -u)
發表人: watchme    時間: 2013-5-3 01:29 PM

6.
#!/bin/sh

namelist=""
oldIFS=$IFS
IFS=$'\n'
for name in $(cat names)
do
          if [ "" = "$namelist" ]; then
                namelist=$name
        else
                    namelist=$namelist:$name
        fi
done
IFS=$oldIFS
echo $namelist
發表人: watchme    時間: 2013-5-3 02:14 PM

7.
#!/bin/sh

if [ $# = 1 ]; then
        who | grep "^$1"
else
        echo "syntax error"
fi
發表人: watchme    時間: 2013-5-3 02:30 PM

8.
#!/bin/sh

if [ $# = 1 ]; then
        /bin/sh -c "echo ~$1"
else
        echo "syntax error"
fi
發表人: watchme    時間: 2013-5-3 02:40 PM

9.
#!/bin/sh

if [ $# = 2 ]; then
        echo "$1$2"
else
        echo "syntax error"
fi


#########################################################33
10.
#!/bin/sh

if [ $# = 2 ]; then
        cmd="echo $1 | sed 's/$2//g'"
        /bin/sh -c "$cmd"
else
        echo "syntax error"
fi
發表人: oldk999    時間: 2013-5-3 09:52 PM

太感謝大大了~
發表人: watchme    時間: 2013-5-6 10:58 AM

14 題的 rm 可以多個參數變成 rm -rf xxx 確保資料夾被刪除

15 是整合前面的所有東西,比較龐大,恐怕沒辦法在編譯程式的空檔寫出來,不知道目前卡在哪裡?

主選單可以用迴圈跑 read 等使用者回應,各對話內容也是

新增使用者參考 useradd --help
刪除使用者參考 userdel --help
密碼相關參考 passwd --help
登入歡迎詞、公告(message of the day)放在 /etc/motd
登出顯示:我沒用過,可能要自己找看看!
發表人: oldk999    時間: 2013-5-6 10:24 PM

目前卡在不知道要怎麼樣把函式及功能填進框架中

#!/bin/bash

# Variable

QUERY=/usr/bin/finger
AddUSER=

# Function

_Add(){
    echo "Add $1 to Linux"
}

_Del(){
    echo "Delete $1 from Linux"
}



# Main
while true;do

clear
echo ""
echo "+------------Menu--------------+"
echo "+ 1) Add    Account            +"
echo "+------------------------------+"
echo "+ 2) Remove Account            +"
echo "+------------------------------+"
echo "+ 3) Query  Account            +"
echo "+------------------------------+"
echo "+ 4) Quit                      +"
echo "+------------------------------+"
echo ""

read -p "Enter number : " space
echo ""

case $space in
    1)
    # Add Account
        echo "Add Account"
        echo ""
        read -p "Enter user name : " username
        
        # handle single or multiple user
        for user in ${username}
        do
          _Add ${user}  
        done
        
        ;;
    2)
    # Delete Account
        echo "Delete Account"
        echo ""
        read -p "Enter user name : " username
        
        # handle single or multiple user
        for user in ${username}
        do
          _Del ${user}  
        done
        ;;   
    3)
    # Query Account
        echo "== Query Account =="
        echo ""
        read -p "Enter user name : " username
        
        $QUERY $username
        ;;
    4)
    # Quit
        echo "Good Byte !!"
        break
        ;;
    *)
    # Invalid
        echo "Invalid number !!"
        ;;
esac

echo ""
read -p "Enter any key to continue..... "
done
發表人: oldk999    時間: 2013-5-17 12:48 AM

已處理完畢~感謝watchme大大的鼎力相助~




歡迎光臨 TWed2k (http://twed2k.org/) Powered by Discuz! 4.1.0