RHCE腳本題目詳解


RHCE腳本題目詳解

題目一

system1上創建一個名為 /root/foo.sh 的腳本,讓其提供下列特性:

當運行 /root/foo.sh redhat ,輸出為 fedora

當運行 /root/foo.sh fedora ,輸出為 redhat

當沒有任何參數或者參數不是 redhat 或者 fedora 時,其錯誤輸出產生以下的信息:

/root/foo.sh redhat | fedora

shell腳本之if語句實現:

#/bin/bash
if [ "$1" == "redhat" ]
then
        echo "fedora"
elif [ "$1" == "fedora" ]
then
        echo "redhat"
else 
        echo "/root/foo.sh redhat | fedora"
fi

shell腳本之case語句實現:

#!/bin/bash
case $1 in
redhat)
echo "fedora"
;;
fedora)
echo "redhat"
;;
*)
echo "/root/foo.sh redhat|fedora"
;;
esac

題目二

system1 上創建一個腳本,名為 /root/batchusers ,此腳本能實現為系統 system1 創建本地用戶,並且這些用戶的用戶名來自一個包含用戶名列表的文件,同時滿足下列要求:

此腳本要求提供一個參數,此參數就是包含用戶名列表的的文件

如果沒有提供參數,此腳本應該給出下面的提示信息 Usage: /root/batchusers userfile 然后退出並返回相應的值

如果提供一個不存在的文件名,此腳本應該給出下面的提示信息 Input file not found 然后退出並返回相應的值

創建的用戶登錄shell/bin/false

此腳本不需要為用戶設置密碼

您可以從下面的URL獲取用戶名列表作為測試用 http://server.group8.example.com/pub/userlist

實現

#!/bin/bash
if [ $# -eq 0 ] ; then
	echo "Usage: /root/batchusers userfile"
	exit 1
fi
if [ ! -f $1 ] ; then
	echo "Input file not found" 
	exit 2
fi
for name in $(cat $1)
do
	useradd -s /bin/false $name
done

測試

由於shell的強大,此題亦有多種解法,此處提供一個批量刪除用戶user*的腳本,用於自行編寫腳本測試

#!/bin/bash
#此處即為刪除的user  user1-user8
for i in {1..8}
do
    userdel -r user$i
done

解析

腳本第一題讀懂沒什么難度 熟悉shell編程 中 if語句 和case語句基本格式即可

唯一一個迷惑人的參數$1放到下面第二題一並解釋

建議使用簡單的if語句實現

#指定/bin/bash執行該腳本
#!/bin/bash
# $#代表傳入的參數個數  -eq代表等於 此處為0   即代表不傳入任何參數 
if [ $# -eq 0 ] ; then
# 返回錯誤語句"Usage: /root/batchusers userfile"
	echo "Usage: /root/batchusers userfile"
#退出 返回相應的值
	exit 1
# shell中if語句的結構所需
fi
# !非 -f 后跟文件名 用於判斷是否存在文件 
if [ ! -f $1 ] ; then
	echo "Input file not found" 
	exit 2
fi
#使用for語句結合cat命令循環將傳入文件(即變量$1所代表)中每一行字符串取出 並存入name變量里 
for name in $(cat $1)
do
#添加用戶 用戶名為name變量的值 並設置-s /bin/false參數
	useradd -s /bin/false $name
done

寫在后面

編輯shell腳本推薦使用vim編輯器

注意if語句格式 每個參數和 '[' 或 ']'之間需要一個空格

務必理解腳本含義 不要死記腳本 畢竟題目中給定的測試字符串以及錯誤輸出可能會變動

腳本編寫完畢需要給予x執行權限chmod 755 filename 或者 chmod a+x filename

That is all ! Have a nice rhce time!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM