脚本分享-利用"SED"命令编写一个用于SVN账号管理的交互式脚本

描述

由于公司员工流动性强,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)我们创建一个账号看看!嘿嘿
脚本分享-利用"SED"命令编写一个用于SVN账号管理的交互式脚本
看看文件"passwd"和"authz"文件中是否自动创建了账号和密码那!
脚本分享-利用"SED"命令编写一个用于SVN账号管理的交互式脚本
脚本分享-利用"SED"命令编写一个用于SVN账号管理的交互式脚本
(2)删除一个账号!
脚本分享-利用"SED"命令编写一个用于SVN账号管理的交互式脚本

是不是感觉很方便了那!一个简单的脚本分享!

猜你喜欢

转载自blog.51cto.com/10978134/2147345
今日推荐