个人笔记记录(常用)

个人笔记


SVN切换相关脚本

<h4>SVN切换相关脚本汇总</h4> <ul> <li><strong>SVN授权文件转换及合并脚本编写</strong></li> </ul> <p><code>/root/svnshell/authz.sh</code></p> <pre><code class="language-shell">rm -rf /tmp/groups echo [groups] &gt;/tmp/authz echo Super_admin=huangwj &gt;&gt; /tmp/authz for authz in `find -L /data/svnroot/ -type f -name "authz"` do if [ `echo $authz | awk -F '/' '{print NF}'` == "6" ];then reponame=`echo $authz | awk -F '/' '{print $4}'` echo -e "\n#-----------------$reponame----------------------"&gt;&gt;/tmp/groups echo $reponame ----- $authz sed "/#\| = r\|*\|\[/d;s/^M//g;/^\s*$/d;s/^/&amp;$reponame\-/g;s/@/@$reponame\-/g;s/,\s*$\|\s*$//g" $authz &gt;&gt; /tmp/authz sed -n "/#\|\[groups\]\|\[aliases\]\|,/d;s/^M//g;/^\s*$/d;s/\[/\n\[/g;s/\[\//\[$reponame:\//g;s/@/@$reponame\-/g;s/\s*$//g;s/\]/\]\n@Super_admin=r/g;/\]\|* =\s*$\|= r\s*$\|= rw\s*/p" $authz &gt;&gt; /tmp/groups fi done cat /tmp/groups &gt;&gt; /tmp/authz alias cp=cp cp -rf /tmp/authz /tmp/rsync/authz #账号转换名单,已手工整理,账号自动替换脚本 cat /root/svnshell/convert | while read line do ID= if [ `echo $line | awk -F ',' '{print $2}'` == "0" ];then ID=`echo $line | awk -F ',' '{print $1}'` sed -i "s/\s*=\s*/=/g;/^$ID\s*=\s*rw*$/d;s/,$ID,/,/g;s/=\s*$ID,\|=\s*$ID\s*$/=/g;s/,$ID\s*$//g" /tmp/rsync/authz elif [ `echo $line | awk -F ',' '{print $2}'` == "2" ];then ID1=`echo $line | awk -F ',' '{print $1}'` ID2=`echo $line | awk -F ',' '{print $3}'` sed -i "s/\s*=\s*/=/g;s/^$ID1\s*=\s*r/$ID2=r/g;s/,$ID1,/,$ID2,/g;s/=\s*$ID1,/=$ID2,/g;s/=\s*$ID1\s*$/=$ID2/g;s/,$ID1\s*$/,$ID2/g" /tmp/rsync/authz fi done #删除成员为空的群组 for group in `sed -n '/*=/d;/=\s*$/p' /tmp/rsync/authz` do sed -i "/^@$group\s*rw*$\|^$group$/d" /tmp/rsync/authz done cp -rf /tmp/rsync/authz /usr/local/csvn/data/conf/svn_access_file vim /tmp/rsync/authz</code></pre> <hr /> <p><strong>将文件导出至windows平台通过<code>dsquery</code>命令进行查询对比</strong></p> <pre><code class="language-shell">#用户列表整合 sed '/\[\|=\s*r$\|=\s*rw$\|*\s*=\s*$/d;/^\s*$/d' /usr/local/csvn/data/conf/svn_access_file | awk -F '=' '{print $2}' &gt; /tmp/rsync/members sed 's/,/\n/g' /tmp/rsync/members &gt; /tmp/rsync/member sed -n '/@\|*\|^\s*$/d;/=\s*r$\|=\s*rw$/p' /usr/local/csvn/data/conf/svn_access_file | awk -F '=' '{print $1}' &gt;&gt; /tmp/rsync/member sort /tmp/rsync/member | uniq &gt; /tmp/rsync/users sed '/@\|\$\|^\s*$/d' /tmp/rsync/users -i #密码文件用户整合 find /data/svnroot -name passwd | xargs sed '/^\s*#\|\[users\]\|^\s*$/d;s/\s*//g' | awk -F '=' '{print $1}' | sort | uniq &gt; /tmp/rsync/passwd sed 's/^\|$/,/g' /tmp/rsync/passwd -i</code></pre> <p><code>如下脚本为批处理脚本保存为.cmd文件后在windows下执行</code></p> <pre><code class="language-bash">@echo off setlocal ENABLEDELAYEDEXPANSION pscp -r -pw svnserve-passwd root@172.16.2.129:/tmp/rsync/* ./ timeout 3 &gt;nul echo.用户名,状态码,姓名,部门,岗位&gt;cklist.csv for /f "delims=" %%a in (users) do ( echo %%a findstr /i ",%%a," passwd&gt;nul 2&gt;nul&amp;&amp;(net user %%a /domain&gt;nul 2&gt;nul&amp;&amp;set st=1||set st=2)||set st=0 set info= if !st!==1 ( for /f "delims=: tokens=2" %%b in ('dsquery ^* -filter ^(sAMAccountName^=%%a^) -attr cn physicalDeliveryOfficeName title -q -l') do set info=!info!,%%b echo !info: =! ) IF DEFINED info (echo.%%a,!st!!info: =!&gt;&gt;cklist.csv) else (echo.%%a,!st!,&gt;&gt;cklist.csv) ) start "" cklist.csv timeout 5</code></pre> <p>导出完成后手工匹配确认<code>cklist.csv</code>文件4种状态后写入<code>/root/svnshell/convert</code>文件,并处理无法匹配的账号进行标识</p> <ul> <li><strong>账号关系对应表建立</strong></li> </ul> <p><code>匹配情况可能</code></p> <blockquote> <p>0、passwd文件中无该账号,标记为无效账号,删除掉 1、LDAP中能匹配到该账号,无需替换 2、无法匹配,需要人为手工匹配 4、保留账号,暂不处理</p> </blockquote> <hr /> <ul> <li><strong>SVN授权文件备份脚本部署</strong></li> </ul> <p><code>vim /data/svnconf/svn_ae_bak.sh</code></p> <pre><code class="language-shell">#!/bin/bash alias cp=cp #svn co https://127.0.0.1/svnconf /data/svnconf --username cmadmin cd /data/svnconf/ svn up cp -rf /usr/local/csvn/data/conf/svn_access_file /data/svnconf/ svn add * svn ci -m "backup"</code></pre> <p><code>添加定时任务,每5分钟自动备份一次配置文件至svnconf配置库</code></p> <pre><code>crontab -e */5 * * * * /bin/bash /data/svnconf/svn_ae_bak.sh</code></pre> <hr /> <ul> <li><strong>一键启用/禁用svnserve配置文件脚本</strong></li> </ul> <pre><code class="language-shell">#关闭所有配置库访问权限 find /data/svnroot/ -name svnserve.conf | xargs sed -i 's/^#*\s*authz-db\s*=.*$/authz-db = none/;s/^#*\s*password-db\s*=.*$/password-db = none/' #启用所有配置库访问权限 find /data/svnroot/ -name svnserve.conf | xargs sed -i 's/^#*\s*authz-db\s*=.*$/authz-db = authz/;s/^#*\s*password-db\s*=.*$/password-db = passwd/' #一键切换开启svnserve服务LDAP认证 find /data/svnroot/ -name svnserve.conf | xargs sed -i 's/^#*\s*anon-access\s*=.*$/anon-access = none/;s/^#*\s*auth-access\s*=.*$/auth-access = write/;s/^#*\s*authz-db\s*=.*$/authz-db = authz/;/^#*\s*use-sasl\s*=.*$/d;$a\use-sasl = true' #一键切换关闭svnserve服务LDAP认证 find /data/svnroot/ -name svnserve.conf | xargs sed -i 's/^#*\s*use-sasl\s*=.*$/# use-sasl = true/' </code></pre> <hr /> <ul> <li><strong>旧配置文件统一备份</strong></li> </ul> <p><code>/root/svnshell/confbak.sh</code></p> <pre><code class="language-shell">#!/bin/bash alias cp=cp rm -rf /data/svnconf/authz-bak.tar.gz /tmp/authzbak/* for authz in `find -L /data/svnroot/ -type f -name "authz"` do if [ `echo $authz | awk -F '/' '{print NF}'` == "6" ];then reponame=`echo $authz | awk -F '/' '{print $4}'` cp -rf $authz /tmp/authzbak/$reponame tar -zvcf /data/svnconf/authz-bak.tar.gz /tmp/authzbak fi done</code></pre> <ul> <li><strong>邮件通知人员名单整理</strong></li> </ul> <p>通过excel汇总状态码为<code>1</code>和<code>2</code>的对应列汇总,然后通过<code>=A1&amp;"@paxsz.com"</code>公司添加邮箱后缀即可通过Outlook识别出来</p> <p>专用账号配置,4个账号存在弱密码限制无法使用旧密码</p> <p>存储库备份 URL地址切换脚本及切换指导输出</p>

页面列表

ITEM_HTML