Shell 腳本添加或刪除用戶及命令使用方法
Shell 要求:寫一個腳本
一、添加10個用戶user1到user10,密碼同用戶名,,若用戶存在,但要求只有用戶不存在的情況下才能添加,格式為/useradd.sh
解答思路:1、使用for 循環語句添加用戶 user1 到user 10
2、判斷用戶是否存在,若存在,則echo 用戶已存在 ,若不存在,添加用戶 ,並設置密碼與用戶名相同 。
腳本: vim useradd.sh 並賦予+x權限、
#!/bin/bash # for I in{1..10};do if id user$I >>/dev/null;then echo “user user$I Exits” else useradd user$I &> /dev/null echo "User user$I add sucefull" echo user$I | passwd --stdin user$I &>/dev/null echo "The user user$I passwd is user$I" fi done
二、刪除戶user1到user10,,若用戶不存在,則echo 用戶不存在,若用戶存在 ,則刪除。格式為/userdel.sh
思路: 1、判斷用戶是否存在 ,若存在,則刪除 ;若不存在,則顯示該用戶不存在
2、使用for 循環語句
腳本: vim userdel.sh,並賦予+x權限
#!/bin/bash # for I in{1..10};do if id user$I >>/dev/null;then userdel -r user$I &> /dev/null echo "User user$I Del successful" else echo "user$I NOT exits." fi done
三、擴展以上腳本,若add則添加用戶user1 到 user10 ,若del 則刪除用戶user1 到user10。格式如 : admin.sh --add |--del
思路: 1、若未輸入任意參數,則輸出格式錯誤並顯示正確的輸入格式,後exit
2、判斷輸入的參數是否為--add ,然後判斷該用戶名是否存在 ,若存在 ,則顯示存在 ;若不存在 ,則添加user1 到user10 10個用戶 ,並配置密碼與用戶名相同 。
3、判斷輸入的參數是否為--del ,然後判斷該用戶名是否存在 ,若存在 ,則刪除操作 ,並echo 顯示刪除成功 ;若不存在 ,則顯示該用戶不存在。
4、判斷輸入的參數為其他 ,則顯示命令錯誤
腳本:admin.sh ,並賦予+x權限
#!/bin/bash # if [ $# -lt 1 ];then #未輸入參數 echo "Usage : useradd.sh [opention]" exit 7 fi if [ $1 == ‘--add‘ ];then #輸入的第一個參數為 for I in {1..10};do if id user$I &>/dev/null ;then echo "user user$I Exit" else useradd user$I echo user$I |passwd --stdin user$I &>/dev/null echo "user user$I add successfull" fi done elif [ $1 == ‘--del‘ ];then for I in {1..10};do if id user$I &>/dev/null ;then userdel -r user$I &>/dev/null echo "userdel user$I successful" else echo "user user$I not Exit" fi done else echo "Exit" exit 10 fi
三、再次擴展以上腳本,通過輸入的參數,來實現用戶的添加與刪除 。格式如: admin2.sh --add|--del|--help wli,jerry,tom,hello,hi
思路: 1、把輸入的第二個參數轉換成列表方式 。
2、若第一個參數為--help ,則顯示幫助命令
3、其他思路依照上個示例
腳本 admin2.sh ,並賦予+x權限
#!/bin/bash # if [ $# -lt 1 ];then echo "Usage:adminuser.sh --add|--del|--help [opentions]" exit 7 fi if [ $1 == ‘--add‘ ];then for USER in `echo $2|sed ‘s/,/ /g‘`;do if id $USER &>/dev/null;then echo "$USER exit" else useradd $USER &>/dev/null echo $USER |passwd --stdin $USER &>/dev/null echo "Add $USER finished." fi done elif [ $1 == ‘--del‘ ];then for USER in `echo $2|sed ‘s/,/ /g‘`;do if id $USER &>/dev/null;then userdel -r $USER &>/dev/null echo "Del $USER finished" else echo "$USER NOT exit" fi done elif [ $1 == ‘--help‘ ];then echo "Usage :a.sh --add USER1,USER2,…|--del USER1,USER2,…|--help" else echo "UNKnown ATGIN" fi
命令格式:
1、判斷語句格式 :
單if分支格式:
if判斷條件;then
fi
雙分支結構:
if 判斷條件;then
else
fi
多分支結構:
if 判斷條件;then
elif ; then
elif ; then
else
fi
2、循環語句格式
for 變量 in 列表 :do
循環體
done
遍歷 完成後,退出
生成列表:echo $2 |sed ‘s/,/ /g‘
整數列表:
{1..100} 1到100的整數
seq [起始數 [步進長度]] 結束數
3、添加/刪除用戶格式
# useradd 創建用戶
-u UID
-g GID(基本組)
-G GID.... (附加組)
-c “COMMENT” 註釋信息
-d 指定家目錄
-s 指定shell 路徑 /etc/shells :指定了當前系統中可用的安全shell
-m -k 強制為用戶創建家目錄 ,並把shell 文件進行拷貝到家目錄
-M /etc/login.defs ,不為用戶創建家目錄
-r 添加系統用戶
#userdel 刪除用戶
若不加任何選項,默認不刪除用戶的家目錄
-r 刪除 用戶同時 ,刪除家目錄
4、passwd 使用格式
#passwd [USERNAME] 修改用戶密碼
--stdin
示例: echo "redhat" | passwd --stdin user3
-l lock
-u unlock
-d 刪除用戶密碼
本文出自 “Wish_亮” 博客,請務必保留此出處http://wishliang.blog.51cto.com/11439802/1955964
Shell 腳本添加或刪除用戶及命令使用方法