#!/bin/bash
#该脚本每次可以创建一个svnrepo.
basepath=$(cd `dirname $0`; pwd)
function create_dir (){
#########define variable
read -p "输入要创建的SVN库: " svnrepo
[ -z $svnrepo ]&& exit
mkdir /var/svn
cd /var/svn
/usr/bin/svnadmin create /var/svn/$svnrepo
conf_url=$basepath/${svnrepo}/conf/svnserve.conf
#########exec command
cp $conf_url /$conf_url.bak
echo "[general]" > $conf_url
echo "anon-access = none" >>$conf_url
echo "auth-access = write" >>$conf_url
echo "password-db = passwd" >>$conf_url
echo "authz-db = authz" >>$conf_url
echo "realm = /var/svn/${svnrepo}" >>$conf_url
echo "[sasl]" >>$conf_url
#rm -rf $conf_url/${svnrepo}/conf/{authz,passwd}
#echo "[${svnrepo}:/]" >>$basepath/authz
#echo "####${svnrepo}" >>$basepath/passwd
echo -e "\033[36;40m已经完成,请编辑authz文件给相关人员授权\033[0m"
#########the end
}
function vim_passwd(){
echo "请配置用户名密码及权限"
pwd_url=$basepath/${svnrepo}/conf/passwd
authz_url=$basepath/${svnrepo}/conf/authz
read -p "输入用户名: " username
read -p "输入密码: " passwd
echo "$username=$passwd" >>$pwd_url
read -p "请输入权限(包括r(读)、w(写)、rw(读写)): " authz
if [ "$authz" == 'r' ] || [ "$authz" == 'w' ] || [ "$authz" == 'rw' ]
then
echo "[/]" >>$authz_url
echo "$username = $authz" >>$authz_url
else
echo "输入错误"
read -p "请重新输入权限(包括r(读)、w(写)、rw(读写)): " authz
echo "[/]" >>$authz_url
echo "$username = $authz" >>$authz_url
fi
read -p "是否继续添加用户名密码(Y/N): " yesNo
while [ $yesNo == 'Y' ] || [ $yesNo == 'y' ]
do
if [ "$yesNo" == 'Y' ] || [ "$yesNo" == 'y' ] ;then
read -p "输入用户名: " username
read -p "输入密码: " passwd
echo "$username=$passwd" >>$pwd_url
read -p "请输入权限:包括r(读)、w(写)、rw(读写)" authz
if [ "$authz" == 'r' ] || [ "$authz" == 'w' ] || [ "$authz" == 'rw' ]
then
echo "$username = $authz" >>$authz_url
else
echo "输入错误"
read -p "请重新输入权限(包括r(读)、w(写)、rw(读写)): " authz
echo "$username = $authz" >>$authz_url
fi
read -p "是否继续添加用户名密码(Y/N): " yesNo
else
return 0
fi
done
}
svn=`/usr/bin/which svnserve`
if [ $? -ne 0 ]; then
echo "subversion 没有安装,正在帮您安装。。。。。"
sleep 1
echo "。。。。"
yum install -y subversion
echo -e "\033[31m记得关闭selinux和开放防火墙3690端口~\033[0m"
create_dir
vim_passwd
else
status=`ps aux |grep svnserve |grep -v 'grep'`
if [ -z "$status" ]; then
echo -e "\033[36;40m未发现svnserve服务运行,将在指定当前目录下为svn根目录\033[0m"
echo "正在启动svn服务。。。"
$svn -d -r $basepath
sleep 1
create_dir
vim_passwd
else
echo -e "本机已经运行svn服务: $status"|awk 'BEGIN{FS=" ";OFS=" " }{ print $1,$12,$13,$14,$15}'
basepath=`echo "$status"|awk '{print $14}'`
echo -e "\033[36;40m进入$basepath目录\033[0m"
cd $basepath
create_dir
vim_passwd
fi
fi
Linux系统shell脚本一键部署svn
于 2024-03-11 15:51:13 首次发布