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: