我有一个SVN服务器托管带有apache前端的repos。大多数repos使用LDAP身份验证,但有些需要使用htpasswd进行身份验证的外部访问。
我的apache conf for subversion repos在.conf文件中使用了以下一系列块(简化)
<Location /svn/reponame>
DirectiveName directivevalue
AnotherDirectiveName "anotherDirectiveValue"
AuthUserFile /share/htpasswdfilename
<Limit GET PROPFIND OPTIONS REPORT>
Order allow,deny
Allow from 123.123.123.123
Satisfy Any
</Limit>
</Location>
为了快速找到活跃的外部用户,我可以使用以下内容
cat subversion.conf | grep AuthUserFile | sed 's/.*\//\/share\//' | xargs cat
将捕获活动htpasswd文件的内容,如下所示
username:password
username:password
username:password
为了使这个输出更有意义,我真的想在每个条目前面添加<Location xxx>
块中的repo名称,例如
/svn/reponame1 - username:password
/svn/reponame2 - username:password
/svn/reponame3 - username:password
答案 0 :(得分:2)
听起来这就是你所需要的:
awk '
BEGIN { OFS=" - " }
NR==FNR {
if ( sub(/^<Location +/,"") ) {
sub(/>$/,"")
location = $0
}
else if ( sub(/^AuthUserFile +/,"") ) {
loc[$0] = location
ARGV[ARGC++] = $0
}
next
}
{ print loc[FILENAME], $0 }
' subversion.conf
上述情况当然未经测试,因为您没有提供可测试的样本输入。