Olisi tarvetta ohjelmalle joka poistaa tiedostosta yli x merkkiä pitkät rivit.
eli ohjelma käytetään esim. komennolla
# clear 300 /var/log/apache.log
ja tämä poistaa apache.log:ista kaikki yli 300 merkkiä pitkät rivit.
Virukset tekevät logiin ylipitkät rivit, ja sen jälkeen statistiikkaohjelmisto ei enää toimi.
PS: Ohjelman C-koodi käy myös.
eli ohjelma käytetään esim. komennolla
# clear 300 /var/log/apache.log
ja tämä poistaa apache.log:ista kaikki yli 300 merkkiä pitkät rivit.
Virukset tekevät logiin ylipitkät rivit, ja sen jälkeen statistiikkaohjelmisto ei enää toimi.
PS: Ohjelman C-koodi käy myös.
Vastaukset 2
Vanhimmat
Kävisikö alla oleva Perl-skripti?
Syntaksi: 'clear NN tiedostonnimi', missä NN on suurin sallittu rivin pituus. Koodin pitäisi olla suunnilleen intuitiivista lukea.
-----------------------
#!/usr/bin/perl
open IN, "$ARGV[1]" or die "no such file\n";
@contents = ;
close IN;
open OUT, ">$ARGV[1].out";
foreach $line (@contents) {
$n = length($line);
if( 1 < $n && $n
Eikö tämä sama kysymys ollut jo joku aika sitten..
Tuon perlipätkän saa yksinkertaistettua rankasti:
perl -i -nle 'print if (length() < 300)' tiedosto
Jos haluaa säilyttää varmuuskopion, niin antaa alkuun vaikka option -i.alkup, niin perl tekee kopion tiedostoon tiedosto.alkup.
Tosin miksi yleensäkään poistaa lokitiedostoista tietoa, vaikka ne olisivatkin matojen tekemiä pyyntöjä. Sen takia ne lokit ovat olemassa, että niistä näkee aiemmin tapahtuneita asioita tarpeen tullen. Jos statistiikkaohjelma ei toimi noin pitkillä riveillä, niin silloin vaihdetaan se vaikka Analogiin.