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

描述

由于公司员工流动性强,SVN服务器总是要添加和删除账号,每次都要反复的配置,当账号密码多了有点眼花缭乱,感觉有点麻烦,为了方便,所以写了一个基于"Sed"命令的用于添加和删除SVN账号的交互式脚本分享!

前提

我们都只到配置SVN服务,有两个文件"passwd"和"authz"。"passwd"用于存储账号密码信息,"authz"用于账号权限控制。我们这个脚本依赖于文件结构,需要准备两个规范化的文档。

编写步骤

1、准备的"passwd"文件一份,模板如下:

[[email protected] conf]# vi passwd
[users]
#产品负责人
#产品或项目经理
#UI设计师
#ID设计师
#软件工程师
#测试工程师
#硬件工程师
#运维工程师

2、准备已配置好权限和组的"authz"文件一份,模板如下:

#注:"="等于号后面需有一个空格
#用户组
[groups]
admin =
director =
manager =
software =
test =
hardware =
ui =
id = 

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

3、编写脚本

基本功能:添加和删除账号
编写要求:
-- 交互式添加与删除账号!
-- 当输出错误,则提示用户重新输入,不会退出脚本执行!
-- 输入的账号只允许英文字符输入,不可为空,不可含有特殊字符!
-- 输入的密码只允许英文、数字字符输入,不可为空,不可含有特殊字符!

内容如下:

[[email protected] 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)删除一个账号!

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

原文地址:http://blog.51cto.com/10978134/2147345

时间: 2024-10-11 14:18:45

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

sed命令的一个用法

有命令如下: 1.sed -n '1~2!p' datafile 该条命令的意思是:每两行读取datafile文件到模式空间,匹配每两行中的第一行,不打印,剩下的行打印,取消默认输出. 2.sed -n '1~2p' datafile 该条命令的意思是:每两行读取datafile文件到模式空间,匹配每两行中的第一行,打印,剩下的行不打印,取消默认输出. 3.sed '1~2d' datafile 这条命令和第一条命令等同. 附:Linux中sed的命令手册相关解释 first~step     

利用sed命令行进行增删改查

sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:非交互式编译文件 语法:sed [options] '[command]' [filename]options:-n 抑制自动(默认的) 输出(全部打印) 读取下一个输入行, -n 要读取的行号-e 执行多个sed指令-f 运行脚本-i 编辑文件内容-i.bak 编辑的同事创造.bak的备份-r 使用扩展的正则表达式 command:a 在匹配后追加i 在匹配后插入p 打印d 删除r/R 读取文件/一行w 另存s 查找c 替换y 替换h

一个用于批量下载网络图片的Shell脚本

By Long Luo 最近为了做好一个天气预报的项目,需要从Yahoo下载一些天气图标,但是由于图标比较多,有80多张.图标是存储在Yahoo Image网站上的. 迅雷不支持https的下载,虽然可以在浏览器下载,但是在浏览器下载太慢,于是写了一个批量下载图片资源的Shell脚本,完美的解决了这个问题. Yahoo天气图标的地址规则如下:`https://s.yimg.com/zz/combo?a/i/us/nws/weather/gr/` + 图标名称 比如: 我使用了2种方法,解决了下载

【原】shell编写一个简单的jmeter自动化压测脚本

在公司做压力测试也挺长时间了,每次测试前环境数据准备都需要话费较长时间,所以一直在考虑能不能将整个过程实现自动化进行,于是就抽空写了一个自动化脚本,当然这个脚本目前功能十分简陋,代码也不完善,很有很多需要改的地方,后续再优化.文中如有错误或者不妥之处,还望指教. 一.设计思路 1.初始化数据库(导入用户,清除数据等) 2.初始化缓存(使用了redis缓存优化系统) 3.执行压力测试 二.目录结构 目录解读: apache-jmeter-3.0 为jmeter程序目录 asserts.log 断言

利用指针函数编写一个求子字符串的函数

#include<stdio.h> #include<string.h> #include<malloc.h> //定义一个指针型函数substr char *substr(char *dest,char *src,int begin,int len) { int srclen=strlen(src);                 //取源字符串长度 if(begin>srclen||!srclen||begin<0||len<0) dest[0]

项目实战_Python.利用Python+Flask编写一个高性能实时主动监控平台?

项目简介: 说明: 主要用于Redis实例集中化实时主动监控,后端采用Python+Flask实现,具体实现代码请阅读代码 项目思路: 项目结构: xmzoomeye-redis ├── app │   ├── conf │   │   ├── config.py │   │   ├── config.pyc │   │   ├── __init__.py │   │   ├── __init__.pyc │   │   └── rdsdata.db │   ├── __init__.py │ 

Python Django 编写一个简易的后台管理工具1-安装环境

安装python环境 MAC 一般都会自带 Python2.x版本 的环境,你也可以在链接 https://www.python.org/downloads/mac-osx/ 上下载最新版安装. 安装pip工具 Python 2.7.9 + 或 Python 3.4+ 以上版本都自带 pip 工具. pip 官网:https://pypi.org/project/pip/ 你可以通过以下命令来判断是否已安装: pip --version 安装django 使用前一步已经安装的pip工具进行安装,

Python Django 编写一个简易的后台管理工具2-创建项目

django-admin 创建项目 pycharm 创建项目 原文地址:https://www.cnblogs.com/xiaomingtx/p/11378155.html

linux sed命令就是这么简单

概述 sed命令是一个面向字符流的非交互式编辑器,也就是说sed不允许用户与它进行交互操作.sed是按行来处理文本内容的.在shell中,使用sed来批量修改文本内容是非常方便的. sed命令的选项 sed [选项] [动作] 选项与参数:-n :使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来.-e :直接在命令列模式上进行 sed 的动作编辑:-f