co se stane po ESC

Petr Vileta petr na practisoft.cz
Úterý Červen 8 18:11:24 CEST 2004


> >ovsem ono to vypada takhle:
> >zapsano: 0
> >zapsano: 1024
> >zapsano: 2048
> >....
> >zapsa
> >
> >No to je pekna prasarna od toho Indiana. On to proste killne :-(
> >Napada nekoho jak100hoven ?
> >
> >
> Predpoklada se, ze si signal odchytite
> ve skriptu sam, pokud dobre rozumim, na
> co si stezujete.
Hmm, no ja bych rad, ale reknete mi jak :-) Skript, ktery ani nestaci
dokoncit zapis do logu (jak popsano vyse) uvadim na konci.
Jde o to, ze mi to vubec neda sanci zjistit mezi dvema read ze souboru, ze
prisel sigpipe nebo cokoliv jineho. On to proste Indian zastreli vcetne
vsech pripadnych child procesu a pozavira (snad) vsechny soubory. Mozna mam
Indiana spatne nakonfigurovaneho, ale nejaky *_timeout tam je tusim na 1
minutu.
Ted me tak jeste s hruzou napada, co to asi dela, kdyz mam ve skriptu nejaky
zapis do MySQL a ten Indos to zabije :-( Kdyz se jedna o zapis do jedine
tabulky, tak budiz - bud se udela, nebo se neudela. Ale kdyz napriklad data
z <form> zapisuji do vice tabulek postupne, tak to udela co? Budu si to
muset nejak nasimulovat a prozkoumat vysledky. Huh, tak tohle jsem netusil.

--
Petr


---CUT---
#!/usr/bin/perl

use CGI qw(:standard);

$log='/tmp/test.log';
$fi='/var/www/domena/home/download/arce505cz.exe';
open(LOG,">$log");
$b=$p=0;
&writelog;
open(I,"<$fi");
print "Content-type: application/executable\n",
 "Connection: close\n",
 "Content-Disposition: filename=\"soubor.exe\"\n\n";
while($r=<I>)
    {
    $b+=length($r);
    $p=print($r);
    &writelog;
    }
&writelog;
print LOG "KONEC\n";
close I;
close LOG;

sub writelog
{
my ($sec,$min,$hour)=localtime(time);
printf LOG "%02d:%02d:%02d\n",$hour,$min,$sec;
foreach $q(sort keys %SIG)
    {
    print LOG $q,'=',$SIG{$q},"\n" if(length($SIG{$q})>0);
    }
print LOG 'p=',$p*1,"\nbytes=",$b*1,"\n",'-'x20,"\n";
}
---CUT---



Další informace o konferenci Linux