← Back to team overview

sslug-teknik team mailing list archive

Re: Sær linje i bash script

 

On Tue, 04 Mar 2008 23:22:19 +0100
Kenneth Ahn Jensen <jakabov@xxxxxxx> wrote:

> Jeg prøver at fikse en syslog-ng så den ikke sender alt for mange
> mails, og er i den forbindelse stødt på følgende script: 
> http://www.campin.net/bash-mail-alert
> 
> I dette script findes en linje som jeg ikke forstår
> echo ${LOGLINE/+([0-9<>])} | /usr/bin/mail ...
> 
> Hvad sker dermed $LOGLINE når der puttes /+([0-9<>]) på?
> 
> Mvh
> Kenneth
> 
> 

umiddelbart så betyder <> at man åbner en fil for både læsning og
skrivning til filen. I dit tilfælde ser det ud til at den samtidigt
knytter filens nummer med en filedescriptor. Eks:

$ exec 123<> /etc/passwd
$ cat <&123

her har den åbnet /etc/passwd filen og sat den til at have
filedescriptor 123 når du så laver en cat på den filedescriptor, så vil
du få indholdet af filen. Tilsvarende kan du også skrive til filen med
f.eks. echo "foobar" >&123

Det klassiske trick er at benytte dette til f.eks. at hente ting fra
nettet uden at bruge externe programmer som wget og curl. 

$ exec 123<> /dev/tcp/www.sslug.dk/80
$ echo -e "GET / HTTP/1.0\n" >&123
$ cat <&123

nu skulle du gerne få html indholdet på forsiden af sslug.dk :-) 


Kim Schulz


References