[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Powiadamianie o zmianie



On Wed, May 15, 2002 at 11:30:14AM +0200, Misiek wrote:
> Witam.
> Problem jest taki:
> Mamy udostepnione konto ftp dla klientow, moga tam wrzucac dla nas rozne
> pliki. Chcialbym zrobic cos takiego, ze w momencie, kiedy w okreslonym
> katalogu cos sie zmieni (a zmiana moze byc dowolna moze przybyc plik
> katalog, plik w katalogu, katalog w katalogu itp) dostaje o maila z
> informacja, ze cos sie zmienilo.
> I pytanie: Czy jest nadzedzie w linuxie, ktore udostepnia taka funkcje?
> Jezeli nie ma to zrobie skrypt i mam pomysl taki, aby wrzucic do crona
> skrypt ktory rbi cos takiego np co 10 minut:
> 1. listuje do spodu folder udostepniony klientom
> 2. porownuje jego zawartosc z poprzednim listingiem
> 3. jezeli sie rozni to posyla maila z informacja co sie zmienilo
> 
> Nie wiem czy to zadziala i jak zadziala, bo nie mam zbyt wielkiej praktyki w
> pisaniu skryptow w bashu. Czy mozna ten schemat uepszyc, ew jakas
> podpowiedz?

Kiedyś napisałem coś takiego. Nie jest to może optymalne ale działa od
trzech lat bez problemów. Można to zrobić o wiele prościej korzystając z
find /katalog -ctime.

#!/bin/sh
# najpierw zmień nazwę staremu plikowi

NEWFILE=/var/spool/naswietlanie/pliki.new
OLDFILE=/var/spool/naswietlanie/pliki.old
DIFFILE=/var/spool/naswietlanie/pliki.dif
SENDMAIL=/usr/sbin/sendmail
GREPINFILE=/tmp/grep.in
GREPOUTFILE=/tmp/grep.out
MAILFILE=/tmp/mail.out

# przenieś stare dane
mv ${NEWFILE} ${OLDFILE}

# wyszukaj pliki w katalogu
find /var/naswietlanie -name '*' -print > ${NEWFILE}

# znajdź różnice
diff ${OLDFILE} ${NEWFILE} > ${DIFFILE}

# skasowane pliki
grep '<' ${DIFFILE} > ${GREPOUTFILE}
# nowe pliki
grep '>' ${DIFFILE} >> ${GREPINFILE}

if [ -s ${GREPINFILE} -o -s ${GREPOUTFILE} ]; then
   echo "To: info@domena.pl" > ${MAILFILE}
   echo "Subject: Zmiany w katalogu /var/naswietlanie" >> ${MAILFILE}
   echo -n "Raport z dnia: " >> ${MAILFILE}
   date >> ${MAILFILE}
   echo "=================================================================" >> ${MAILFILE}
   echo "Skasowane pliki:" >> ${MAILFILE}
   cat ${GREPOUTFILE} >> ${MAILFILE}
   echo "=================================================================" >> ${MAILFILE}
   echo "Nowe pliki:" >> ${MAILFILE}
   cat ${GREPINFILE} >> ${MAILFILE}
   echo "=================================================================" >> ${MAILFILE}
   echo "" >> ${MAILFILE}
   echo "Wiadomość utworzona przez automat." >> ${MAILFILE}
   cat ${MAILFILE} | ${SENDMAIL} -oi -t -f DO-NOT-REPLY@domena.pl
fi


rm ${GREPOUTFILE} ${GREPINFILE}
if [ -e ${MAILFILE} ]; then rm ${MAILFILE}
fi

  eloy
-- 
 --Krzysztof-eloy-Krzyżaniak-----------------------eloy-@-transilvania-eu-org--

                        Dark star why do you run from me
                        Dark star why don't you kill me


-- 
To UNSUBSCRIBE, email to debian-user-polish-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org



Reply to: