練習:
1.編寫指令碼/bin/per.sh,判斷當前使用者對指定的引數檔案,是否不可讀並且不可寫
2.編寫指令碼/root/bin/excute.sh ,判斷引數檔案是否為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 可讀 可寫
3.編寫指令碼/root/bin/nologin.sh和login.sh,實現禁止和充許普通使用者登入系統#*********************指令碼內容如下********************
echo 請輸入檔名
read filename
[ -f
$filename ] && ls -l
$filename|grep "\.sh$" && chmod 777
$filename ||echo 該檔案》不是.sh檔案
編寫乙個指令碼/root/bin/createuser.sh,指令碼的執行語法必須是:createuser.sh -u username -m password,選項與引數間可支援多空格,但不能順序顛倒。#*********************指令碼內容如下********************
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 登陸"
當未指定正確的選項或引數時,以錯誤輸出方式提示「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...