LINUX 指令碼編寫

2021-08-05 19:19:46 字數 2643 閱讀 9769

練習:

1.編寫指令碼/bin/per.sh,判斷當前使用者對指定的引數檔案,是否不可讀並且不可寫

#*********************指令碼內容如下********************

echo 請輸入需要檢視的檔案路徑

read file_path

a=1b=1

cat $file_path &> /dev/null

a=$(echo $?)

touch $file_path &> /dev/null

b=$(echo $?)

[[ a -eq 1 && b -eq 1 ]] && echo 不可讀不可寫

[[ a -gt b ]] && echo 不可讀,可寫

[[ a -lt b ]] && echo 可讀,不可寫

[[ a -eq 0 && b -eq 0 ]] && echo 可讀 可寫

2.編寫指令碼/root/bin/excute.sh ,判斷引數檔案是否為sh字尾的普通檔案,如果是,新增所有人可執行許可權,否則提示使用者非指令碼檔案

#*********************指令碼內容如下********************

echo 請輸入檔名

read filename

[ -f

$filename ] && ls -l

$filename|grep "\.sh$" && chmod 777

$filename ||echo 該檔案》不是.sh檔案

3.編寫指令碼/root/bin/nologin.sh和login.sh,實現禁止和充許普通使用者登入系統

#*********************指令碼內容如下********************

echo 請輸入使用者名稱

read username

echo 選擇需要執行的操作:a.禁止登陸 b.允許登陸

read

set[[ $set != a && $set != b ]] && (echo 您輸入的不符合規定 ;exit)

echo

$set |grep "a" &>/dev/null && usermod -s /sbin/nologin $username|echo

"禁止$username 登陸"

echo

$set |grep "b" &>/dev/null && usermod -s /bin/login $username|echo

"允許$username 登陸"

編寫乙個指令碼/root/bin/createuser.sh,指令碼的執行語法必須是:createuser.sh -u username -m password,選項與引數間可支援多空格,但不能順序顛倒。

當未指定正確的選項或引數時,以錯誤輸出方式提示「createuser.sh -u username -m password 」後退出指令碼。

合法使用者名稱的正則提取

使用者名稱必須以字母開頭,可包括數字和_。否則不合法。以錯誤輸出提示使用者」使用者名稱僅包含字母資料和下劃線」

當使用者名稱檢測合法後,判斷使用者名稱是否已存在,若存在,再判斷使用者是否已設定過密碼,若設定過密碼,直接退出,

未設定,則將密碼設定為所指定的密碼後以正確輸出方式顯示「username 密碼已更新後退出」

當使用者名稱不存在,則建立使用者,並為該使用者設定所指定的密碼後以正確輸出方式顯示「使用者username已建立並更新密碼」

要求指令碼執行過程中不能有非要求的其他輸出結果出現。指令碼在非正確方式退出時應反回給?引數非0值。

#*********************指令碼內容如下********************

#!/bin/bash

if [ $#

-ne4 ];then

echo

"createuser.sh -u username -m password"

exit

elif [ $1 != "-u" ];then

echo

"createuser.sh -u username -m password"

exit

elif [ $3 != "-m" ];then

echo

"createuser.sh -u username -m password"

exit

fiuser_2=$(echo

$2 |grep "^[[:alpha:]][_[:alnum:]]*" -o)

[[ $user_2 == $2 ]]&&echo

"使用者名稱合法"||(echo

"使用者名稱不合法";exit)

id $2 &>/dev/null &&

echo

"此 id 已存在哦" &&

(cat /etc/shadow |grep "$2.\!\!"&>/dev/null&& echo

$4|passwd --stdin $2 &&echo

"使用者密》碼更新成功")||

(useradd $2 && echo

"$4"|passwd --stdin $2 && echo

$2 使用者建立成功 &>/dev/null)||

echo 有密碼

linux 指令碼 函式編寫

為增加 復用性,建立函式 函式1,func1.sh 同一指令碼內呼叫 bin bash 定義變數 user aaa display display source func1.sh 到入庫 或者 func1.sh 函式2,func2.sh 跨指令碼呼叫 bin bash 引入外部指令碼 使用sourc...

linux指令碼編寫記錄

1.重啟某個埠,適用於如tomcat重啟8080埠,根據lsof命令查出,通過grep獲取指定行,awk獲取到指定列進而得出pid值關閉即可.pid lsof i 3001 grep v pid grep w listen awk echo pid if pid then kill 9 pid ec...

Linux 指令碼編寫基礎 四

4 函式 如果您寫了一些稍微複雜一些的程式,您就會發現在程式中可能在幾個地方使用了相同的 並且您也會發現,如果我們使用了函式,會方便很多。乙個函式是這個樣子的 functionname inside the body 1 is the first argument given to the func...