munin-varnish plugin

(via github.com)

Varnish http proxy cache plugins for munin.

OpenSSL update breaks Parallels Plesk Panel

(via kb.parallels.com)

Latest update of the openssl package from CentOS breaks Parallels Panel 9.x. The following errors are displayed in the /var/log/sw-cp-server/error_log file when Panel is trying to start:


2010-03-29 11:21:22: (log.c.75) server started
2010-03-29 11:21:22: (network.c.336) SSL: error:00000000:lib(0):func(0):reason(0)
...

Resolution: It is necessary to update Parallels Panel web-engine.

get-flash-videos - A command line program to download flash videos

(via www.ubuntugeek.com)

Download videos from various Flash-based video hosting sites, without having to use the Flash player. Handy for saving videos for watching offline, and means you don’t have to keep upgrading Flash for sites that insist on a newer version of the player.

How to Set Up a High Performance Cluster (HPC) Using Debian Lenny and Kerrighed

(via www.debianadmin.com)

There are many guides found on the net describing Kerrighed and how to set it up using Ubuntu and others. However, to the best of my knowledge there isn’t a step by step guide specifically designed for Kerrighed using Debian Lenny.

BAR - Backup archiver program

(via www.ubuntugeek.com)

BAR is backup archiver program to create compressed and encrypted archives of files that can be stored on a hard disk, CD, DVD, or directly on a server via FTP, SCP, or SFTP. A server mode and a scheduler are integrated for making automated backups in the background. A graphical front end that can connect to the (remote) server is included.

Search bot report

Here is a simple bash script to get a daily report of search bot results of Success (200) and Failed (404) hits:

#!/bin/bash
# bot_report.sh
# usage: ./bot_report.sh [botName] [logPath]
# default: ./bot_report.sh Googlebot /var/log/httpd/access_log

######################################
# Run this in a daily cron           #
# 59 23 * * * /path/to/bot_report.sh #
######################################

# Commands
GREP=/bin/grep
DATE=/bin/date
MKDIR=/bin/mkdir
AWK=/bin/awk
SORT=/bin/sort
UNIQ=/usr/bin/uniq
TMPWATCH=/usr/sbin/tmpwatch<br />CAT=/bin/cat
MAIL=/bin/mail
ECHO=/bin/echo

# Global Variables
DEFAULT_BOT_NAME=Googlebotr />DEFAULT_LOG_FILE=/var/log/httpd/access_log
if [ -z "$1" ]; then
BOT_NAME=${DEFAULT_BOT_NAME}r />else
BOT_NAME=$1
fi
if [ -z "$2" ]; then
LOG_FILE=${DEFAULT_LOG_FILE}r />else
LOG_FILE=$2
fi
PREFIX_LOG=`$ECHO $LOG_FILE | sed 's/\//_/g'`
TMP_LOG_PATH=/tmp/bot_report
TMP_LOG_FILE=${TMP_LOG_PATH}/${PREFIX_LOG}_`${DATE} +%F`.log
TMP_REPORT_FILE=${TMP_LOG_PATH}/${BOT_NAME}_report.txt
EMAIL=user@domain.tld

###########################<br /># Nothing to change below #
###########################<br />
# Produce a temp file to work with for todays date
tmp_file_out() {
[ -d "${TMP_LOG_PATH}" ] || $MKDIR ${TMP_LOG_PATH}
if [ ! -f "${TMP_LOG_FILE}" ]; then
$GREP `$DATE +%d/%b/%Y` $LOG_FILE > $TMP_LOG_FILE
fi
}

# Clean up temp file older than a day
tmp_file_clean() {
$TMPWATCH 24 $TMP_LOG_PATH
}

# Create report
report_out() {
$ECHO "######## Success Hits ########" > $TMP_REPORT_FILE
$GREP " 200 " $TMP_LOG_FILE | $AWK -v bot="$BOT_NAME" '$0 ~ bot {print $7}' | $SORT | $UNIQ -c | $SORT -rn >> $TMP_REPORT_FILE
$ECHO >> $TMP_REPORT_FILE
$ECHO "######## Failed Hits ########" >> $TMP_REPORT_FILE
$GREP " 404 " $TMP_LOG_FILE | $AWK -v bot="$BOT_NAME" '$0 ~ bot {print $7}' | $SORT | $UNIQ -c | $SORT -rn >> $TMP_REPORT_FILE
}

# Mail report
mail_report() {
$CAT $TMP_REPORT_FILE | $MAIL -s "bot report: ${BOT_NAME}" $EMAIL
}

#
# Main
#
tmp_file_out
report_out
mail_report
tmp_file_clean

exit 0

network programming in bash

(via shudder.daemonette.org)

Discusses the possibilities of using Bash for socket programming using /dev/tcp with file descriptors redirection.

X2go - Open source terminal server project (alternative to FreeNX)

(via www.ubuntugeek.com)

x2go is an open source terminal server project offering a comprehensive “server based computing” solution. Combining the advantages of existing systems it features ease of use, performance and scalability.

php with mysqlnd support

You can now get the latest PHP with mysqlnd (MySQL Native Driver) support via remis' yum repository as mentioned in PHP-5.3,-zts-and-mysqlnd. The blog mentions that this is enabld in php-zts. However, no php-pecl extension are available and neither are some of the extensions thread safe. So I went about rebuilding php package from source for mysqlnd support.

  1. Download the source php rpm from http://rpms.famillecollet.com/SRPMS/ . Note, I have used php-5.3.2 which is the latest as of this writing.
  2. Install and apply the below diff patch to the spec file via `patch -p0 < {new_patch_file}` where "new_patch_file" has the below contents:

    --- php-5.3.2-remi.spec.orig 2010-03-11 23:07:04.000000000 -0600
    +++ php-5.3.2-remi.spec 2010-03-11 23:36:03.000000000 -0600
    @@ -24,6 +24,7 @@
    %global phpversion 5.3.2

    # Optional components; pass "--with mssql" etc to rpmbuild.
    +%define with_mysqlnd %{?_with_mysqlnd:1}%{!?_with_mysqlnd:0}
    %define with_oci8 %{?_with_oci8:1}%{!?_with_oci8:0}
    %define with_ibase %{?_with_ibase:1}%{!?_with_ibase:0}
    %if %{?rhel}%{?fedora} > 4
    @@ -677,6 +678,11 @@
    %if %{?fedora}%{?rhel:99} >= 10
        &nbsp;    --with-system-tzdata \
    %endif
    +%if %{with_mysqlnd}
    +    &nbsp;   --with-mysql=shared,mysqlnd \
    +    &nbsp;   --with-mysqli=shared,mysqlnd \
    +    &nbsp;   --with-pdo-mysql=shared,mysqlnd \
    +%endif
    $*
    if test $? != 0; then
       tail -500 config.log
    @@ -704,8 +710,13 @@
        &nbsp;  --enable-dba=shared --with-db4=%{_prefix} \
        &nbsp;  --with-xmlrpc=shared \
        &nbsp;  --with-ldap=shared --with-ldap-sasl \
    +%if %{with_mysqlnd}
    +    &nbsp; --with-mysql=shared,mysqlnd \
    +    &nbsp; --with-mysqli=shared,mysqlnd \
    +%else
        &nbsp;  --with-mysql=shared,%{_prefix} \
        &nbsp;  --with-mysqli=shared,%{_bindir}/mysql_config \
    +%endif
    %ifarch x86_64
        &nbsp;  %{?_with_oci8:--with-oci8=shared,instantclient,%{_libdir}/oracle/%{oraclever}/client64/lib,%{oraclever}} \
    %else
    @@ -725,7 +736,11 @@
        &nbsp;  --enable-fastcgi \
        &nbsp;  --enable-pdo=shared \
        &nbsp;  --with-pdo-odbc=shared,unixODBC,%{_prefix} \
    +%if %{with_mysqlnd}
    +    &nbsp; --with-pdo-mysql=shared,mysqlnd \
    +%else
        &nbsp;  --with-pdo-mysql=shared,%{_prefix} \
    +%endif
        &nbsp;  --with-pdo-pgsql=shared,%{_prefix} \
        &nbsp;  --with-pdo-sqlite=shared,%{_prefix} \
        &nbsp;  --with-pdo-dblib=shared,%{_prefix} \
    @@ -756,6 +771,16 @@
        &nbsp;  --with-recode=shared,%{_prefix}
    popd

    +%if %{with_mysqlnd}
    +without_shared="--without-gd \
    +    &nbsp; --disable-dom --disable-dba --without-unixODBC \
    +    &nbsp; --disable-xmlreader --disable-xmlwriter \
    +    &nbsp; --without-sqlite \
    +    &nbsp; --disable-phar --disable-fileinfo \
    +    &nbsp; --disable-json --without-pspell --disable-wddx \
    +    &nbsp; --without-curl --disable-posix \
    +    &nbsp; --disable-sysvmsg --disable-sysvshm --disable-sysvsem"
    +%else
    without_shared="--without-mysql --without-gd \
        &nbsp;  --disable-dom --disable-dba --without-unixODBC \
        &nbsp;  --disable-pdo --disable-xmlreader --disable-xmlwriter \
    @@ -764,6 +789,7 @@
        &nbsp;  --disable-json --without-pspell --disable-wddx \
        &nbsp;  --without-curl --disable-posix \
        &nbsp;  --disable-sysvmsg --disable-sysvshm --disable-sysvsem"
    +%endif

    # Build Apache module, and the CLI SAPI, /usr/bin/php
    pushd build-apache

  3. Package with:
    rpmbuild -bb --with mysqlnd --define "rhel 5" SPECS/php-5.3.2-remi.spec
    
  4. To install via yum, change to the directory where rpms are located and recreate the repodata via:
    createrepo .
  5. Note: you may need to install some of the missing dependent devel packages. I used a combination of base, epel and remi repository to install the dependencies.

FBReader - e-book reader for Linux desktops

(via www.ubuntugeek.com)

FBReader is an e-book reader. It currently works on the Sharp Zaurus, Siemens Simpad with Opensimpad ROM, Nokia
Internet Tablet (Maemo platform), Archos PMA430, Motorola E680i/A780/A1200 smartphones, PepperPad 3, Asus Eee PC, IRex iLiad, UMPC, and desktop computers running Linux, Windows XP/Vista, or FreeBSD. It supports several e-book formats: epub, plucker, palmdoc, zTXT, HTML, CHM, fb2, TCR (psion text), OEB, OpenReader, RTF, non-DRM'ed Mobipocket, and plain text.

Comment