<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: administration code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sun, 27 Jul 2008 07:16:17 GMT</pubDate>
    <description>DZone Snippets: administration code</description>
    <item>
      <title>backup subversion repository over email</title>
      <link>http://snippets.dzone.com/posts/show/2635</link>
      <description>&lt;code&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;# $Id: repodiff 3 2006-09-21 18:48:39Z sevkin $&lt;br /&gt;#&lt;br /&gt;# subversion repository incremental backup over e-mail&lt;br /&gt;#&lt;br /&gt;# (c) 2006 Vsevolod Balashov under terms of GNU GPL v.2 or later&lt;br /&gt;&lt;br /&gt;SVNROOT=/var/svn&lt;br /&gt;EMAIL=your@email.here&lt;br /&gt;STORE=`mktemp -d`&lt;br /&gt;GPGCRYPT=n&lt;br /&gt;&lt;br /&gt;for REPO in `ls $SVNROOT`; do &lt;br /&gt;	REPOPATH=$SVNROOT/$REPO;&lt;br /&gt;	if [ -r $REPOPATH/youngest ]; then&lt;br /&gt;		LATEST=`cat $REPOPATH/youngest`&lt;br /&gt;		YOUNGEST=`svnlook youngest $REPOPATH`&lt;br /&gt;		if [ $LATEST -lt $YOUNGEST ]; then&lt;br /&gt;			svnadmin dump $REPOPATH --incremental -r $LATEST:$YOUNGEST &gt;$STORE/$REPO 2&gt;/dev/null&lt;br /&gt;		fi&lt;br /&gt;	else&lt;br /&gt;		svnadmin dump $REPOPATH --incremental &gt;$STORE/$REPO 2&gt;/dev/null&lt;br /&gt;	fi &lt;br /&gt;	echo $YOUNGEST &gt;$REPOPATH/youngest &lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;if [ `ls $STORE | wc -w` -gt 0 ]; then&lt;br /&gt;	BACKUP=repodiff_`date -u +%Y%m%d%H%M%S`.tar.bz2&lt;br /&gt;	ATTACH=$STORE/../$BACKUP&lt;br /&gt;	tar  -C $STORE -cjf $ATTACH .&lt;br /&gt;	if [ $GPGCRYPT = y ]; then&lt;br /&gt;		gpg -e -r $EMAIL $ATTACH&lt;br /&gt;		ATTACH=$ATTACH.gpg&lt;br /&gt;	fi&lt;br /&gt;	echo "." | mutt -c $EMAIL -a $ATTACH -s "repository incremental backup"&lt;br /&gt;	rm -f $ATTACH&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;rm -rf $STORE&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 21 Sep 2006 22:58:18 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2635</guid>
      <author>sevkin (Vsevolod Balashov)</author>
    </item>
    <item>
      <title>Subversion service for low-load (personal?) sources repository</title>
      <link>http://snippets.dzone.com/posts/show/2623</link>
      <description>Create separate user and insert svnserve into inetd.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# useradd -g root -s /bin/false -d /dev/null -c "SubVersion Daemon" svnserve&lt;br /&gt;# mkdir /var/svn&lt;br /&gt;# chown -R svnserve /var/svn&lt;br /&gt;# update-inetd --add 'svn\tstream\ttcp\tnowait\tsvnserve\t/usr/sbin/tcpd\t/usr/bin/svnserve --inetd --root /var/svn'&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;/var/svn - root of repository.&lt;br /&gt;update-inetd - standart tool in debian and ubuntu linux distros&lt;br /&gt;&lt;br /&gt;You must run svnadmin as svnserve user for manage your repository&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ sudo sudo -u svnserve svnadmin &lt;command&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;</description>
      <pubDate>Tue, 19 Sep 2006 23:48:50 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2623</guid>
      <author>sevkin (Vsevolod Balashov)</author>
    </item>
    <item>
      <title>Real-time website referrers tracer</title>
      <link>http://snippets.dzone.com/posts/show/399</link>
      <description>Trace your website visitors (and referrers) as they come using this bash script.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# CONFIGURATION&lt;br /&gt;# =============&lt;br /&gt;&lt;br /&gt;# Where your httpd log file is&lt;br /&gt;log="current-http-accesslog"&lt;br /&gt;&lt;br /&gt;# What files to exclude (request for those files won't be shown)&lt;br /&gt;exclude="\.gif|\.jpg|\.png|\.ico|\.css|\.js"&lt;br /&gt;&lt;br /&gt;# Width of request and referer columns (set it to match your terminal)&lt;br /&gt;col_width=35&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# MAIN SCRIPT&lt;br /&gt;# ===========&lt;br /&gt;&lt;br /&gt;# Check if log file actually exists (and is readable)&lt;br /&gt;if [ ! -r "${log}" ]; then&lt;br /&gt;echo "Cannot access log file: $log"&lt;br /&gt;exit 0&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# After startup we will output few lines&lt;br /&gt;start=`wc -l &lt; "${log}"`&lt;br /&gt;start=$(( $start - 30 ))&lt;br /&gt;if (( ${start} &lt; 0 ))&lt;br /&gt;then start=$((0))&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# Main loop&lt;br /&gt;while :&lt;br /&gt;do&lt;br /&gt;  end=`wc -l &lt; "${log}"`&lt;br /&gt;  end="${end##* }"&lt;br /&gt;  if (( ${end} &gt; ${start} ))&lt;br /&gt;  then&lt;br /&gt;    start=$(( $start + 1 ))&lt;br /&gt;    sed -n "${start},${end}p" "${log}" | egrep -v "${exclude}" | awk -v col_width=$col_width '{&lt;br /&gt;&lt;br /&gt;      # we are only interested in GET/POST requests&lt;br /&gt;      if ( match($0, /"(GET|POST).*?"/) &gt; 0 )&lt;br /&gt;      {&lt;br /&gt;        split($0, fields, "\"")&lt;br /&gt;&lt;br /&gt;        # IP_ADDRESS&lt;br /&gt;        tmp = $1&lt;br /&gt;        while ( length(tmp) &lt; 15 ) tmp = tmp " "&lt;br /&gt;        printf "%s", tmp " "&lt;br /&gt;    &lt;br /&gt;        # HTTP_REQUEST (GET/POST)&lt;br /&gt;        tmp = substr(fields[2], 0, index(fields[2], "HTTP/") - 1 )&lt;br /&gt;        tmp = substr(tmp, index(tmp, " ") + 1, col_width)&lt;br /&gt;        while ( length(tmp) &lt; col_width ) tmp = tmp " "&lt;br /&gt;        printf "%s", tmp " "&lt;br /&gt;    &lt;br /&gt;        # REFERER (the juice)&lt;br /&gt;        tmp = fields[4]&lt;br /&gt;        while ( length(tmp) &lt; col_width ) tmp = tmp " "&lt;br /&gt;        printf "%s", tmp " "&lt;br /&gt;    &lt;br /&gt;        # USER_AGENT&lt;br /&gt;        printf "%s", fields[6]&lt;br /&gt;    &lt;br /&gt;        # new line at the end&lt;br /&gt;        printf "\n"&lt;br /&gt;      }&lt;br /&gt;    }'&lt;br /&gt;&lt;br /&gt;    start=${end}&lt;br /&gt;  fi&lt;br /&gt;&lt;br /&gt;  # this is an endless loop that sleeps every second&lt;br /&gt;  sleep 1&lt;br /&gt;done&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;</description>
      <pubDate>Sun, 19 Jun 2005 22:32:03 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/399</guid>
      <author>paulgoscicki (Paul Goscicki)</author>
    </item>
    <item>
      <title>Find which pids are using which TCP ports</title>
      <link>http://snippets.dzone.com/posts/show/383</link>
      <description>On unix systems: lsof&lt;br /&gt;On windows:      command line: Tcpvcon&lt;br /&gt;                          GUI: TCPView &lt;br /&gt;  (can be downloaded from http://www.sysinternals.com/Utilities/TcpView.html)</description>
      <pubDate>Wed, 15 Jun 2005 01:06:32 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/383</guid>
      <author>nicolas (Nicolas)</author>
    </item>
  </channel>
</rss>
