CPAN

Marcin Dalecki dalecki w cs.net.pl
Czw, 4 Mar 1999, 13:35:23 CET


Konrad Stepien wrote:
> 
> On Tue, 2 Mar 1999, Marcin Dalecki wrote:
> 
> > Konrad Stepien wrote:
> > >
> > > W³a¶nie sobie ogl±da³em CPANa z RedHat powertools. Generalnie wiêkszo¶æ
> > > (wszystkie ?) rpm-y s± generowane z automata. Mo¿e by te¿ co¶ takiego
> > > wykonaæ dla PLD. Jedyny problem jaki widzê to polskie t³umaczenie w
> > > specach.
> > > Acha, no i jeszcze jedno, te modu³y w rpmach nie rejestruj± siê w
> > > perllocal.pod, ma kto¶ mo¿e pomys³ jak by to obej¶æ, a mo¿e nie warto?
> >
> > Nieco cynicznie mo¿naby odpowiedzieæ: Niewarto, tak jak niewarto perl-a.
> > (oczywi¶cie je¶li zna siê awk, sed, ksh itp....)
> >
> Dobra, nie chcê to jakiej¶ wojny wszczynaæ, perla mo¿na lubiæ lub nie,
> ale jego si³a le¿y w³a¶nie w ogromenj lio¶ci modu³ów dodatkowych.

Nie ja raczej tak patrzac przez palce to pisalem tak troche z
usmieszkiem.
Oczywiscie znam realia i nikogo do niczego przymuszac nie chce. Ale
wolalbym aby
zadne komponenty systemowe nie zawieraly sztucznych moim zadniem
uzaleznien
od perla. Tak jak np. domyslnie vim-a nie powinno sie kompilowac
ze wspomaganiem perla.  (W tym wypadku nawet przypominam sobie rozmowe 
z tym kto to wspomagnie ((Andy Kahn jesli sie nie myle)) zimplementowal.
No po uplywie czasu  sam sadzi, ze zrobil to bo bylo 
to latwe ale obecnie uwaza ze jest to chory pomysl.)

> Je¶li znasz jaki¶ prostszy sposób na dobieranie siê np. do ró¿nych
> baz danych, to chêtnie siê dowiem.

Ano oczywiscie ze znam :-). Podaje to tu na liscie
bo wartownicy jakich dostawilem na poczatku moga byc rowniez 
przydatni dla takich rzeczy jak np. PLDconfig, ktore rowniez nie
powinny byc wywolywane zbyt czesto.

"Niechaj wiec Kod Przemawia:"

#!/bin/ksh
#
# (C) 1999 by Martin Dalecki <dalecki w dacotec.net>
# All rights reserved.
#
# Get daministrative data from the MySQL db server and create the
# corresponding server configuration files
#

#############################################################################
# Global parameters:
#

# File used to lock out multiple simultaneous invocations of this
# script.
#
LOCKFILE=/var/run/getadmindata.pid

# File used to preserver the time stamp between multiple invocations of
this
# script
#
TIMELOCK=/var/run/getadmindata.stamp

# The minimal time delay imposed between consecutive invocations of this
script.
#
STARTDELAY=3

#############################################################################
# Error reporting facility
#
mail_error()
{
        echo "getadmindata: error: $1!" 1>&2;
}


#############################################################################
# Startup sanity checks.
#

# Check whatever we had been called multiple times.
# If yes then we will just refuse to work properly.
if [ -f "$LOCKFILE" ]; then
        mail_error "lock file already exists - starting anyway";
        rm -f "$LOCKFILE";
        exit 1;
fi

# Check wherever we had been respawning too fast.
# This should prevent the most trivial kind of DoS attacks.
#
if [ -f "$TIMELOCK" ]; then
        let "DIFFTIME=$(date +'%s')-$(date +'%s' -r$TIMELOCK )";
        if [ $DIFFTIME -lt $STARTDELAY ]; then
                mail_error "respawning too fast in $DIFFTIME secs.";
                exit 1;
        fi
fi

echo $$ > $LOCKFILE
echo $0 >> $LOCKFILE         

#############################################################################
# Helper function, which is actually used to generate the SQL queries
#
sqlery ()
{
        echo $1 | mysql -B -hjakis.sobie.serwer.com -ustalin -pabieda
mojabazadanych \
        | sed -e'1d';
}

#############################################################################
# First get the data out of the SQL server and put it into corresponding
# arrays.
#
sqlery "SELECT id,name,init,init_by,chng,status FROM server" \
| while read id name init init_by chng status; do
        echo -e "$id: $name $init $init_by $chng $status";

        # Now lookup the account corresponding to this id?
        #
done

#############################################################################
# Set our timstamp and premitt reinvoation of this script.
#
touch "$TIMELOCK"

rm -f "$LOCKFILE" 

      
A jesli chcesz to moge podrzucic jeszcze bardziej prosciutki przyklad w
C...

--Marcin



Więcej informacji o liście dyskusyjnej pld-devel-pl