|
| perl Fra : Sonni Bak Skammelsen |
Dato : 11-07-02 15:35 |
|
Hej
Jeg har et lille problem met et perlscript. det går i alt sin enkelthed ud
på at lave en linecount i en bestemt fil.
Jeg kører commandoen, more /home/netguard/.htpasswd|wc -l fra et perlscript
og det returnere den rigtige værdi.
Men kører jeg scriptet gennem apache som et cgi script får jeg et resultat
som er 3 højere, findes der en god men simpel forklaring på dette, og
eventuelt en lille løsning.
/Sonni
| |
Lars Balker Rasmusse~ (11-07-2002)
| Kommentar Fra : Lars Balker Rasmusse~ |
Dato : 11-07-02 15:42 |
|
"Sonni Bak Skammelsen" <news@sonni.org> writes:
> Jeg har et lille problem met et perlscript. det går i alt sin enkelthed ud
> på at lave en linecount i en bestemt fil.
>
> Jeg kører commandoen, more /home/netguard/.htpasswd|wc -l fra et perlscript
> og det returnere den rigtige værdi.
>
> Men kører jeg scriptet gennem apache som et cgi script får jeg et resultat
> som er 3 højere, findes der en god men simpel forklaring på dette, og
> eventuelt en lille løsning.
"more fil | wc -l" var dog en grusom konstruktion. Prøv med "wc -l fil".
Alternativt kan du prøve med følgende perl-stump:
open FOO, "/home/netguard/.htpasswd" or die "open .htpasswd: $!";
my $cnt = 0;
while (<FOO>) { ++$cnt }
close FOO;
# $cnt har nu antal linier i filen
--
Lars Balker Rasmussen "Special is bad."
| |
Thorbjoern Ravn Ande~ (11-07-2002)
| Kommentar Fra : Thorbjoern Ravn Ande~ |
Dato : 11-07-02 16:18 |
|
Lars Balker Rasmussen skrev:
>>Men kører jeg scriptet gennem apache som et cgi script får jeg et resultat
>>som er 3 højere, findes der en god men simpel forklaring på dette, og
>>eventuelt en lille løsning.
>
>
> "more fil | wc -l" var dog en grusom konstruktion. Prøv med "wc -l fil".
Kan det vaere "more" paa en dum terminal der giver alle de ekstra linier?
| |
Lars Balker Rasmusse~ (11-07-2002)
| Kommentar Fra : Lars Balker Rasmusse~ |
Dato : 11-07-02 16:27 |
|
Thorbjoern Ravn Andersen <thunderbear@bigfoot.com> writes:
> Kan det vaere "more" paa en dum terminal der giver alle de ekstra linier?
Det var min tanke.
--
Lars Balker Rasmussen "Special is bad."
| |
Peter Mogensen (11-07-2002)
| Kommentar Fra : Peter Mogensen |
Dato : 11-07-02 15:46 |
|
Sonni Bak Skammelsen wrote:
> Jeg har et lille problem met et perlscript. det går i alt sin enkelthed ud
> på at lave en linecount i en bestemt fil.
>
> Jeg kører commandoen, more /home/netguard/.htpasswd|wc -l fra et perlscript
> og det returnere den rigtige værdi.
>
> Men kører jeg scriptet gennem apache som et cgi script får jeg et resultat
> som er 3 højere, findes der en god men simpel forklaring på dette, og
> eventuelt en lille løsning.
Jeg ved ikke hvorfor, men jeg undrer mig over to ting.
- hvorfor bruger du 'more'? 'more' er en pager (ligesom 'less'). Jeg
tror 'cat' er mere velegnet til det formål du ønsker, nemlig at få sendt
filens indhold ud på standard output.
Måske er det også grunden til forskellen - at more opfører sig
anderledes end du regner med:
cat /home/netguard/.htpasswd|wc -l
- Det andet jeg undrer mig over er hvorfor du overhovedet gør det på den
måde. Det er næsten at bede om sikkerhedsproblemer at kalde
kommando-fortolkeren fra CGI-scripts... specielt uden absolutte stier.
Du kunne lave det samme i ren Perl:
-----------------
#!/usr/bin/perl
$FILE = "/home/netguard/.htpasswd";
open FILE or die "no readable file";
$linecnt = 0;
while (<FILE>) { $linecnt++; }
close FILE;
print $linecnt . "\n";
----------------
Det er både hurtigere og sikrere.
Hvis det skukke være rigtig fil burde du køre det med perl -T
Peter
| |
Peter Mogensen (11-07-2002)
| Kommentar Fra : Peter Mogensen |
Dato : 11-07-02 16:08 |
|
Peter Mogensen wrote:
> Hvis det skukke være rigtig fil burde du køre det med perl -T
Argh... mund^H^H^H^Hhåndlort.
Hvis det skulle være rigtigt fint burde du...
"taint checks"
man perlsec
Peter
| |
Henrik Christian Gro~ (11-07-2002)
| Kommentar Fra : Henrik Christian Gro~ |
Dato : 11-07-02 17:04 |
|
Peter Mogensen <apm-at-mutex-dot-dk@nospam.no> writes:
> cat /home/netguard/.htpasswd|wc -l
Hermed tildeles du en "useless use of cat-award". Du får det samme ud af
`wc -l /home/netguard/.htpasswd`?
..Henrik
--
Min signatur er taget på sommerferie.
| |
Peter Brodersen (11-07-2002)
| Kommentar Fra : Peter Brodersen |
Dato : 11-07-02 19:06 |
|
On 11 Jul 2002 18:03:37 +0200, Henrik Christian Grove <grove@sslug.dk>
wrote:
>Hermed tildeles du en "useless use of cat-award". Du får det samme ud af
>`wc -l /home/netguard/.htpasswd`?
Det er altså ikke korrekt. Godt nok er der mange tilfælde, hvor cat er
unødvendig (og folk har retmæssigt mange henvisninger til "useless
use..."), men det kan ikke siges i alle tilfælde.
$ wc -l /etc/fstab
8 /etc/fstab
$ cat /etc/fstab | wc -l
8
Hermed ikke sagt at cat absolut er nødvendig her, men man bør
stadigvæk være opmærksom på forskellen.
--
- Peter Brodersen
| |
Rasmus Bøg Hansen (11-07-2002)
| Kommentar Fra : Rasmus Bøg Hansen |
Dato : 11-07-02 19:14 |
|
Peter Brodersen wrote:
> use..."), men det kan ikke siges i alle tilfælde.
>
> $ wc -l /etc/fstab
> 8 /etc/fstab
> $ cat /etc/fstab | wc -l
> 8
Jeg har oplevet forskellen med 'filer' i /proc nogle gange - men hvornår
skulle der ellers være en forskel?
/Rasmus
--
-- [ Rasmus "Møffe" Bøg Hansen ] ---------------------------------------
Beware of bugs in the above code;
I have only proved it correct, not tried it.
- Donald Knuth
----------------------------------[ moffe at amagerkollegiet dot dk ] --
| |
Thomas (12-07-2002)
| Kommentar Fra : Thomas |
Dato : 12-07-02 07:40 |
|
Rasmus Bøg Hansen wrote:
> Peter Brodersen wrote:
>
>> use..."), men det kan ikke siges i alle tilfælde.
>>
>> $ wc -l /etc/fstab
>> 8 /etc/fstab
>> $ cat /etc/fstab | wc -l
>> 8
>
> Jeg har oplevet forskellen med 'filer' i /proc nogle gange - men hvornår
> skulle der ellers være en forskel?
F.eks. i det du selv quoter ?
--
Don't waste space
| |
Rasmus Bøg Hansen (12-07-2002)
| Kommentar Fra : Rasmus Bøg Hansen |
Dato : 12-07-02 18:46 |
|
Thomas wrote:
> Rasmus Bøg Hansen wrote:
>> Peter Brodersen wrote:
>>
>>> use..."), men det kan ikke siges i alle tilfælde.
>>>
>>> $ wc -l /etc/fstab
>>> 8 /etc/fstab
>>> $ cat /etc/fstab | wc -l
>>> 8
>>
>> Jeg har oplevet forskellen med 'filer' i /proc nogle gange - men hvornår
>> skulle der ellers være en forskel?
>
> F.eks. i det du selv quoter ?
Så lad mig spørge på en anden måde: Hvorfor er der somme tider forskel på
"wc -l /etc/fstab" og "cat /etc/fstab | wc -l"?
/Rasmus
--
-- [ Rasmus "Møffe" Bøg Hansen ] ---------------------------------------
Hidden DOS secret:
add BUGS=OFF to your CONFIG.SYS
----------------------------------[ moffe at amagerkollegiet dot dk ] --
| |
Povl H. Pedersen (12-07-2002)
| Kommentar Fra : Povl H. Pedersen |
Dato : 12-07-02 18:50 |
|
In article <agn4k2$r7j$1@carlsberg.amagerkollegiet.dk>,
Rasmus Bøg Hansen <moffe47@hotmail.com> wrote:
> Så lad mig spørge på en anden måde: Hvorfor er der somme tider forskel på
> "wc -l /etc/fstab" og "cat /etc/fstab | wc -l"?
Førstnævnte kender filnavnene du angiver til den, og printer dem med ud
Den anden kender ikke noget filnavn, og kan derfor ikke printe det ud.
| |
Rasmus Bøg Hansen (12-07-2002)
| Kommentar Fra : Rasmus Bøg Hansen |
Dato : 12-07-02 19:26 |
|
Povl H. Pedersen wrote:
> In article <agn4k2$r7j$1@carlsberg.amagerkollegiet.dk>,
> Rasmus Bøg Hansen <moffe47@hotmail.com> wrote:
>
>> Så lad mig spørge på en anden måde: Hvorfor er der somme tider forskel på
>> "wc -l /etc/fstab" og "cat /etc/fstab | wc -l"?
>
> Førstnævnte kender filnavnene du angiver til den, og printer dem med ud
> Den anden kender ikke noget filnavn, og kan derfor ikke printe det ud.
Nå, jeg forstod det som at de kunne tælle til et forskelligt antal linjer og
forstod ikke, hvordan det skulle være muligt...
/Rasmus
--
-- [ Rasmus "Møffe" Bøg Hansen ] ---------------------------------------
It may be the only innovation in Windows (CTRL-ALT-DELETE was
not invented by MS).
- Hans Reiser
----------------------------------[ moffe at amagerkollegiet dot dk ] --
| |
Peter Makholm (11-07-2002)
| Kommentar Fra : Peter Makholm |
Dato : 11-07-02 19:24 |
|
Peter Brodersen <usenet@ter.dk> writes:
> $ wc -l /etc/fstab
> 8 /etc/fstab
> $ cat /etc/fstab | wc -l
> 8
$ wc -l < /etc/fstab
8
$
Stadig ingen grund til at bruge cat.
--
Peter Makholm | If you can't do any damage as root, are you still
peter@makholm.net | really root?
http://hacking.dk | -- Derek Gladding about SELinux
| |
Peter Brodersen (11-07-2002)
| Kommentar Fra : Peter Brodersen |
Dato : 11-07-02 19:30 |
|
On Thu, 11 Jul 2002 20:24:13 +0200, Peter Makholm <peter@makholm.net>
wrote:
>Stadig ingen grund til at bruge cat.
Som sagt, "Hermed ikke sagt at cat absolut er nødvendig her". Det var
selvfølgelig en forglemmelse ikke i det mindste at nævne en passende
redirection.
--
- Peter Brodersen
| |
Sonni Skammelsen (11-07-2002)
| Kommentar Fra : Sonni Skammelsen |
Dato : 11-07-02 20:56 |
|
"Peter Mogensen" <apm-at-mutex-dot-dk@nospam.no> wrote in message
news:3D2D9A19.2020404@nospam.no...
>
>
> Jeg ved ikke hvorfor, men jeg undrer mig over to ting.
>
> - hvorfor bruger du 'more'? 'more' er en pager (ligesom 'less'). Jeg
> tror 'cat' er mere velegnet til det formål du ønsker, nemlig at få sendt
> filens indhold ud på standard output.
> Måske er det også grunden til forskellen - at more opfører sig
> anderledes end du regner med:
>
> cat /home/netguard/.htpasswd|wc -l
>
> - Det andet jeg undrer mig over er hvorfor du overhovedet gør det på den
> måde. Det er næsten at bede om sikkerhedsproblemer at kalde
> kommando-fortolkeren fra CGI-scripts... specielt uden absolutte stier.
>
> Du kunne lave det samme i ren Perl:
> -----------------
> #!/usr/bin/perl
>
> $FILE = "/home/netguard/.htpasswd";
>
> open FILE or die "no readable file";
>
> $linecnt = 0;
>
> while (<FILE>) { $linecnt++; }
> close FILE;
>
> print $linecnt . "\n";
> ----------------
>
> Det er både hurtigere og sikrere.
> Hvis det skukke være rigtig fil burde du køre det med perl -T
>
> Peter
Det skulle egentlig bare gå lidt hurtigt med at få det brygget sammen, og
mine talenter inden for perl var før i går = 0.
Men den med cat i stedet for more den virkede fint, og et lille tillæg til
den, hvis man laver den uden cat får men filnavn + sti med, det var jeg ikke
interreseret i.
Takker mange gange for det gode input.
/Sonni
| |
|
|