Portál AbcLinuxu, 12. května 2025 05:44

Dotaz: Perl daemon – volání funkce z externího skriptu

24.8.2008 00:45 VSi | skóre: 28
Perl daemon – volání funkce z externího skriptu
Přečteno: 391×
Odpovědět | Admin
Potřebuji poradit s řešením problému, nejřív naznačím co je vlastně cílem:

Vytvářím nástroj pro logování přihlášení a odhlášení uživatelů na Samba PDC. Není to tak jednoduché, protože Windows se při připojení k serveru chovají dost divně a ještě k tomu pokaždé jinak. Po určité době se někdy odpojují od sdílení, kam se nepřistupuje. K home sdílení se zase náhodně připojují a odpojují i několikrát najednou. To potřebuji ošetřit aby byla výstupem nějaká čitelná a přehledná statistika.

Možnosti jsou: parsování logů, sledování smbstatus (resp. přímo souboru sessionid.tdb) a využití root preexec a postexec v Sambě. Na straně Windows klienta žádné úpravy dělat nechci i když by to možná práci ulehčilo. Celé by se to mělo obejít jen s informacemi ze Samby.

Protože chci mít data přístupná s co nejmenším zpožděním, bude to realizováno jako daemon v Perlu, který bude data ukládat do MySQL. Jako hlavní zdroj dat využiji preexec a postexec v Sambě zkombinovaný se smbstatus a časovým ošetřením - to mám vymyšlené.

Teď vlastní dotaz:

Jak na pozadí běžícímu programu v Perlu předávat informace z externího programu / skriptu? Přesněji Samba bude pod rootem spouštět skript, který tomu daemonu v Perlu předá informaci v rozsahu {přihlášení/odhlášení + jméno stroje + login}. Tuto informaci zpracuje nějaká funkce.

Napadlo mě využití pojmenované roury. Na straně volání by to mohlo vypadat asi takhle:

echo akce $machine $user > /path/to/pipe

Jak to zpracovat v Perlu? Nebudou potíže při větší zátěži, když se sejde víc požadavků najednou? Asi by to chtělo nějakou frontu, je třeba to řešit explicitně?

Jak je to s právy na tu rouru?

Pokud vás napadá jiné řešení, nebráním se tomu.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.8.2008 19:14 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: Perl daemon – volání funkce z externího skriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
navrhoval by som socket riešenie, či už INET alebo UNIX (resp využiť rôzne RPC balíky). Napr RPC::XML
# client:
use RPC::XML::Client;
my $cli = new RPC::XML::Client ('http://localhost:3344/');
my $res = $cli->send_request ('login', { m => $machine, u => $user });
my $res = $cli->send_request ('logout', { m => $machine, u => $user });
....
server podobne jednoducho, pozri RPC::XML::Server">RPC::XML::Server.
24.8.2008 19:41 VSi | skóre: 28
Rozbalit Rozbalit vše Re: Perl daemon – volání funkce z externího skriptu
Díky moc. Vypadá to použitelně a pěkně, jednoduše.

Je možné nějak jednoduše řešit zabezpečení? Zatím by mi stačilo, aby Socket naslouchal jen na localhostu (to snad půjde snadno). Klient vždy poběží pod rootem. Na tom serveru nemá nikdo možnost pouštět svoje programy, tak to zatím nemusím tak řešit.

Ale kdyby se tam mohli normálně přihlašovat uživatelé, tak aby mi tam nemohli posílat "falešné" záznamy. Právě u té roury jdou nastavit klasická UNIX práva.

25.8.2008 08:47 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: Perl daemon – volání funkce z externího skriptu
HTTP autorizácia, podpisovanie dát, čo ťa napadne
ak nestačí, unix práva nastavíš pre IO::Socket::UNIX či IPC::Msg ... len to je trošku zložitejšie.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.