prosim o pomoc se scriptem

Dan Lukes dan at obluda.cz
Fri Sep 8 14:08:37 CEST 2006


Jaroslav Votruba napsal/wrote, On 09/08/06 13:25:
> snazim se napsat jednoduchy scriptik na zalohu jedne DB z mysq a protoze 
> s tim zacinam potreboval bych poradit s nekolika drobnostmi(pro vas,pro 
> me zatim nadlidskej ukol)
> 
> #!/bin/sh

	PERLove reseni tu uz padlo, tak ja dolnim ten shell (preci kvuli takove 
drobnosti nebudeme instalovat a nasledne udrzovat tak ohromny balik, 
kterym PERL je).

> DATE=`date +%Y-%m-%d`            #format datumu
> DATABASES="PwkDemo pwkdemoII"           #nazvy db psat za sebe oddelene 
> mezerou
> NAMEBCUP=`$DATE $DATABASES.sql`        #jmeno zalohy
> MAIL=`mail at neco.cz mail2 at neco.cz`    #maily ,kam budou posilany vysledky 
> zalohovani-psat za sebe oddelene mezerou
> LOG=`/var/log/pwk_backup/$NAMEBCUP.log`            #cesta k logu
> OK=`Zalohovani databaze $DATABASES probehlo v poradku`    #zaloha je 
> vytvorena

	Zacnu tim, ze ` je, snad, nasledkem nejakeho divneho presunu scriptu do 
emailu - jinak se retezce uzaviraji do " nebo '

> mysqldump -a -Q -c --user=$USER --password=$HESLO $DATABASES > "$CESTA 
> $NAMEBCUP"
> 
> ####PRVNI VEC CO SE MI NELIBI###
> #pokud do DATABASES napisu vic DB prestava mi to 
> fungovat(logicky),bohuzel nevim jak to vse upravit ,aby pro kazdou DB co 
> vypisu do DATABASES mi to vytvorilo zalohu a log

Pouzit:
set -- $DATABASES
mysqldump -a -Q -c --user=$USER --password=$HESLO $* > ...


> #kontrola vytvoreni souboru a vytvoreni logu


> if
> test -f "$CESTA $NAMEBCUP"               #Soubor existuje
> then
> cd "$LOG"                                      #Vytvor log
>  echo $OK > "$NAMEBCUP"

	Existence souboru bohuzel nezarucuje, ze dump je kompletni - s oheldem 
na to, jak byl soubor vytvoren (presmerovani) bude dokonce existovat 
naprosto vzdy - byt' treba prazdny

	Dokumentace ani manualova stranla se o navratovych kodech mysqldump 
nezminuje - neni tedy jiste, jestli se uspesnost da zjistovat podle 
toho. Mozna by slo zjistovat, zda vygenerovany soubor konci nejakym 
typickym radkem, kterym tyhle soubory mysql obvykle zakoncuje - ale 
nevim, jestli tam takovy rozumny je.

	Pokud ano, delalo by se to nejspis sekvenci

if tail ... | grep ... ; then ...


> ####DRUHA VEC CO SE MI NELIBI###
> #jak se muzu vyhnout prikazu cd-predstavoval bych si to nejak jako   
> echo $OK > "$LOG $NAMEBCUP",ale to je nefuncni
> #proste bych chtel mit cestu na jednom radku

Ze zapisu neni prilis zrejme, jak se ma vlastne LOG a vysledny soubor 
jmenovat. Obzvlast v pripade vicenasobneho seznamu databazi.

	Promenna LOG v te chvili uz ovsahuje neco, co mi pripada jako jmeno 
souboru, takze nechapu, proc je za ni jeste $NAMEBCUP coz je dalsi jmeno 
souboru ...

	Pokud se ovsem mylim a $LOG je adresar, pak u UNIXu se cesta zapisuje 
oddelena '/' nikoli ' ' - takze

echo $OK > "$LOG/$NAMEBCUP"

> ####TRETI VEC CO SE MI NELIBI###
> #nevim jak mam log vlozit do mailu a poslat na MAIL

mail -s '<subject>' 'seznam-adres-oddelenych-carkou' < "$LOG/$NAMEBCUP"

Pokdu neni mozne nahore seznam adres oddelovat rovnou carkou, pak je 
treba nejprve provest nejakou konverzi. nejlepe pomoci
tr ' ' ','

					Dan


-- 
Dan Lukes                                   SISAL MFF UK
AKA: dan at obluda.cz, dan at freebsd.cz,dan at kolej.mff.cuni.cz



More information about the Users-l mailing list