一、編寫腳本 createuser.sh,實現以下功能:使用一個用戶名作爲參數,若是指定參數的用戶存在,就顯示其存在,不然添加之;顯示添加的用戶的id號等信息
[root@centos8mini ~]# cat createuser.sh
#!/bin/bash
set -u
echo -e "\e[1;33m檢查用戶名是否存在\e[0m"
echo -e "\e[1;33m說明:當用戶存在,則提示用戶已存在;當用戶不存在,則自動建立用戶.\e[0m"
read -p "請輸入用戶名: " ACCOUNT
USERNAME=`echo $ACCOUNT | tr 'A-Z' 'a-z'`
if [[ $USERNAME =~ ^[[:alnum:]]+$ ]];then
`id $USERNAME &> /dev/null`
if [ $? -eq 0 ];then
echo "用戶已存在."
elif [ $? -ne 0 ];then
echo "用戶不存在,下面開始自動建立用戶."
read -p "請輸入初始密碼位數: " NUMBER
if [[ $NUMBER =~ ^[[:digit:]]+$ ]] && [ "$NUMBER" != 0 ];then
`useradd $USERNAME`
PASSWORD=`cat /dev/urandom | tr -dc '[[:alnum:]]' | { head -c $NUMBER;echo; }`
echo `echo $PASSWORD | passwd --stdin $USERNAME`
else
echo "您的輸入有誤,請從新輸入正確的數字."
exit 3
fi
USER_UID=`grep "$USERNAME" /etc/passwd | sed -n -E 's@^(.*):x:([[:digit:]]+):([[:digit:]]+):(.*):(.*):(.*)$@\2@p'`
USER_HOME_DIR=`grep "$USERNAME" /etc/passwd | sed -n -E 's@^(.*):x:([[:digit:]]+):([[:digit:]]+):(.*):(.*):(.*)$@\5@p'`
USER_SHELL=`grep "$USERNAME" /etc/passwd | sed -n -E 's@^(.*):x:([[:digit:]]+):([[:digit:]]+):(.*):(.*):(.*)$@\6@p'`
echo -e "\e[1;35m************用戶$USERNAME************\e[0m"
echo -e "\e[1;36m用戶名: $USERNAME\n密碼: $PASSWORD\nUID: ${USER_UID}\n家目錄: ${USER_HOME_DIR}\nshell: ${USER_SHELL}\e[0m"
else
exit 2
fi
else
echo "您的輸入有誤,請從新輸入字母與數字的組合或字母或數字."
exit 1
fi
二、編寫生成腳本基本格式的腳本,包括做者,聯繫方式,版本,時間,描述等
[root@centos8mini ~]# cat .vimrc
autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()
if expand("%:e") == 'sh'
call setline(1,"#!/bin/bash")
call setline(2,"#")
call setline(3,"#********************************************************************")
call setline(4,"#Author: xyj")
call setline(5,"#QQ: 90*****31")
call setline(6,"#Date: ".strftime("%Y-%m-%d"))
call setline(7,"#FileName: ".expand("%"))
call setline(8,"#URL: https://blog.51cto.com/3958535")
call setline(9,"#Description: The is test script")
call setline(10,"#Copyright ?: ".strftime("%Y")." All rights reserved")
call setline(11,"#********************************************************************")
call setline(12,"")
endif
endfunc
autocmd BufNewFile * normal G
三、查找/etc目錄下大於1M且類型爲普通文件的全部文件
[root@centos8mini ~]# find /etc \( -size +1M -type f \) -ls
四、打包/etc/目錄下面全部conf結尾的文件,壓縮包名稱爲當天的時間,並拷貝到/usr/local/src目錄備份。
[root@centos8mini ~]# find /etc -name "*.conf" | xargs tar -jcvf /usr/local/src/`date +%F`.tar.bz2
五、查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件或目錄
[root@centos8mini ~]# find / \( -nouser -o -nogroup \) -a -atime -7
六、查找/etc目錄下至少有一類用戶沒有執行權限的文件
[root@centos8mini ~]# find /etc ! -perm -111 -ls