1. 程式人生 > >腳本分享-利用"SED"命令編寫一個用於SVN賬號管理的交互式腳本

腳本分享-利用"SED"命令編寫一個用於SVN賬號管理的交互式腳本

proc 條件 exit %d swd ftw sed ash else

描述

由於公司員工流動性強,SVN服務器總是要添加和刪除賬號,每次都要反復的配置,當賬號密碼多了有點眼花繚亂,感覺有點麻煩,為了方便,所以寫了一個基於"Sed"命令的用於添加和刪除SVN賬號的交互式腳本分享!

前提

我們都只到配置SVN服務,有兩個文件"passwd"和"authz"。"passwd"用於存儲賬號密碼信息,"authz"用於賬號權限控制。我們這個腳本依賴於文件結構,需要準備兩個規範化的文檔。

編寫步驟

1、準備的"passwd"文件一份,模板如下:

[root@localhost conf]# vi passwd
[users]
#產品負責人
#產品或項目經理
#UI設計師
#ID設計師
#軟件工程師
#測試工程師
#硬件工程師
#運維工程師

2、準備已配置好權限和組的"authz"文件一份,模板如下:

#註:"="等於號後面需有一個空格
#用戶組
[groups]
admin = 
director = 
manager = 
software = 
test = 
hardware = 
ui =  
id = 

#根目錄
[/]
@director = rw
@manager = rw
* = r
省略內容.....

3、編寫腳本

基本功能:添加和刪除賬號
編寫要求:
-- 交互式添加與刪除賬號!
-- 當輸出錯誤,則提示用戶重新輸入,不會退出腳本執行!
-- 輸入的賬號只允許英文字符輸入,不可為空,不可含有特殊字符!

-- 輸入的密碼只允許英文、數字字符輸入,不可為空,不可含有特殊字符!

內容如下:

[root@localhost conf]# vi svnmanager.sh 
#!/bin/bash
echo ‘################################################
#     此腳本用於SVN賬號管理,添加或刪除        #
################################################
#     1、輸入"1",表示添加一個SVN賬號          #
#     2、輸入"2", 表示刪除一個SVN賬號          #
#     3、若輸入其他,則退出腳本                #
#     註:刪除需謹慎操作!                      #
################################################‘

SVN_STORGE_PATH=/var/svn/ProductNew/conf
SVN_STORGE_PASSWORD=$SVN_STORGE_PATH/passwd
SVN_STORGE_AUTHZ=$SVN_STORGE_PATH/authz

read -p ‘請輸入"1" 或 "2": ‘ i
date=`date +%Y-%m-%d\ %H:%M:%S`
case $i in
"1")
while :
do
read -p "請輸入你要添加的賬號: " a1
if [[ $a1 =~ ^[a-zA-Z]+$ ]]
then
        while :
        do
        read -p "請輸入密碼: " a2
        if [[ $a2 =~ ^[a-zA-Z0-9]+$ ]]
        then
echo ‘################################################
#    編號         職稱                                                                #
#    01           產品負責人(director)                                        #
#    02           產品或項目經理(manager)                               #
#    03           軟件工程師(software)                                      #
#    04           測試工程師(test)                                              #
#    05           硬件工程師(hardware)                                     #
#    06           UI設計師(ui)                                                     #
#    07           ID設計師(id)                                                     #
#    08           運維工程師(admin)                                          #
################################################‘
        a3="$a1 = $a2"
        read -p "請輸入職稱(請輸入編號): " a4
                case $a4 in
                "01")
                sed -i ‘/^#產品負責人/a\‘"$a3"‘‘ $SVN_STORGE_PASSWORD
                sed -i ‘s/^director = /&‘"$a1",‘/‘ $SVN_STORGE_AUTHZ
                echo "賬號\"$a1\"添加成功!"
                echo "時間:$date"
                exit 0
                ;;
                "02")
                sed -i ‘/^#產品或項目經理/a\‘"$a3"‘‘ $SVN_STORGE_PASSWORD
                sed -i ‘s/^manager = /&‘"$a1",‘/‘ $SVN_STORGE_AUTHZ
                echo "賬號\"$a1\"添加成功!"
                echo "時間:$date"
                exit 0
                ;;
                "03")
                sed -i ‘/^#軟件工程師/a\‘"$a3"‘‘ $SVN_STORGE_PASSWORD
                sed -i ‘s/^software = /&‘"$a1",‘/‘ $SVN_STORGE_AUTHZ
                echo "賬號\"$a1\"添加成功!"
                echo "時間:$date"
                exit 0
                ;;
                "04")
                sed -i ‘/^#測試工程師/a\‘"$a3"‘‘ $SVN_STORGE_PASSWORD
                sed -i ‘s/^test = /&‘"$a1",‘/‘ $SVN_STORGE_AUTHZ
                echo "賬號\"$a1\"添加成功!"
                echo "時間:$date"
                exit 0
                ;;
                "05")
                sed -i ‘/^#硬件工程師/a\‘"$a3"‘‘ $SVN_STORGE_PASSWORD
                sed -i ‘s/^hardware = /&‘"$a1",‘/‘ $SVN_STORGE_AUTHZ
                echo "賬號\"$a1\"添加成功!"
                echo "時間:$date"
                exit 0
                ;;
                "06")
                sed -i ‘/^#UI設計師/a\‘"$a3"‘‘ $SVN_STORGE_PASSWORD
                sed -i ‘s/^ui = /&‘"$a1",‘/‘ $SVN_STORGE_AUTHZ
                echo "賬號\"$a1\"添加成功!"
                echo "時間:$date"
                exit 0
                ;;
                "07")
                sed -i ‘/^#ID設計師/a\‘"$a3"‘‘ $SVN_STORGE_PASSWORD
                sed -i ‘s/^id = /&‘"$a1",‘/‘ $SVN_STORGE_AUTHZ
                echo "賬號\"$a1\"添加成功!"
                echo "時間:$date"
                exit 0
                ;;
                "08")
                sed -i ‘/^#運維工程師/a\‘"$a3"‘‘ $SVN_STORGE_PASSWORD
                sed -i ‘s/^admin = /&‘"$a1",‘/‘ $SVN_STORGE_AUTHZ
                echo "賬號\"$a1\"添加成功!"
                echo "時間:$date"
                exit 0
                ;;
                esac
        else
        echo ‘INFO:輸入有誤!請重新輸入!‘
        echo ‘INFO:輸入條件:只允許大小寫字母、數字字符輸入!不可為空!不可含有特殊字符!‘
        fi
        done
else
echo ‘INFO:輸入有誤!請重新輸入!‘
echo ‘INFO:輸入條件:只允許英文字符輸入!不可為空!不可含有特殊字符!‘
fi
done
;;
"2")
read -p "請輸入要刪除的賬號: " b1
if [[ $b1 =~ ^[a-zA-Z]+$ ]]
then
sed -i ‘/^‘"$b1"‘/d‘ $SVN_STORGE_PASSWORD
sed -i ‘s/‘"$b1",‘//g‘ $SVN_STORGE_AUTHZ
sed -i ‘s/‘"$b1"‘//g‘ $SVN_STORGE_AUTHZ
echo "已刪除賬號\"$b1\"!"
echo "時間:$date"
else
echo ‘INFO:輸入有誤!請重新輸入!‘
echo ‘INFO:輸入條件:只允許英文字符輸入!不可為空!不可含有特殊字符!‘
fi
;;
*)
echo "INFO:輸入有誤!請重新執行腳本!重新輸入!"
;;
esac

4、演示腳本執行效果

(1)我們創建一個賬號看看!嘿嘿
技術分享圖片
看看文件"passwd"和"authz"文件中是否自動創建了賬號和密碼那!
技術分享圖片
技術分享圖片
(2)刪除一個賬號!
技術分享圖片

是不是感覺很方便了那!一個簡單的腳本分享!

腳本分享-利用"SED"命令編寫一個用於SVN賬號管理的交互式腳本