kontrola obsahu uctu na FTP serveru

Jirka Kosina jikos na jikos.cz
Pondělí Listopad 4 18:54:05 CET 2002


On Mon, 4 Nov 2002, Tomas Vida wrote:

> > K tomu muzete pouzit mechanismy, ktere umoznuji hlidat zmeny v
> > urcitych souborech/adresarich, a tyto zmeny hlasit.
> > Muzete zkusit fam, ale ten je udajne pri velkem provozu trosku
> > nestabilni.  Osobne bych to resil pres dnotify (viz
> > /usr/src/linux/Documentation/dnotify.txt).
> A nemuzete mi s tim trosku pomoct? Na ten doc jsem se samozrejme dival,
> ale nevim, jak to pouzit. Ani FAM se mi nepodarilo nijak pouzit. Nejde o
> zadny velky provoz. Potrebuju sledovat 1 adresar vcetne podadresaru, kde
> bude max. 20 souboru a denne se to muze treba 4x zmenit.

Primo v te dokumentaci k dnotify mate ukazkovy priklad, jak se to pouziva. 
Udelejte si nejaky takovyhle program

dnot.c:

#define _GNU_SOURCE	
#include <fcntl.h>	
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
	
static volatile int event_fd;

static void handler(int sig, siginfo_t *si, void *data)
{
	event_fd = si->si_fd;
}
	
int main(void)
{
	struct sigaction act;
	int fd;
	
	act.sa_sigaction = handler;
	sigemptyset(&act.sa_mask);
	act.sa_flags = SA_SIGINFO;
	sigaction(SIGRTMIN, &act, NULL);
		
	fd = open(".", O_RDONLY);
	fcntl(fd, F_SETSIG, SIGRTMIN);
	fcntl(fd, F_NOTIFY, DN_MODIFY|DN_CREATE|DN_MULTISHOT);
	for (;;) {
		/* pockame si na signal */
		pause();
		printf("Na filedeskriptoru %d nastala udalost\n",event_fd);
	}
}

Zkompilujte si ho (gcc dnot.c -o dnot) a pak si ho v danem adresari 
spustte. Pokazde, kdyz bude v tom adresari pak vytvoren soubor/adresar, 
dozvite se to signalem.

Problem je, chcete-li to sledovat i ve vsech podadresarich, protoze to 
dnotify sam od sebe neumi. Budete si muset tedy pomoci 
opendir()/readdir()/closedir() pri kazde zmene projit adresarovou 
strukturu, abyste zjistil co se zmenilo, a na nove adresare opet pouzit 
dnotify mechanismus.

Ovsem pokud ten system skutecne nevykazuje nejakou extremni zatez, muzete 
zkusit pouzit ten fam, mam pocit, ze ho mnoho lidi z teto konference 
uspesne pouziva (ja pouzivam dnotify), a s pripadnymi problemy vam treba 
nekdo pomuze.

-- 
JiKos.




Další informace o konferenci Linux