shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Script dhcpd.leases


From: Leandro Costa
Subject: Script dhcpd.leases
Date: Tue, 24 Oct 2000 19:08:14 -0200

Ola galera !!!!

Alguem tem um script que converta: o arquivo dhcpd.leases para um o seguinte
padrao:

Exemplo dhcpd.leases
lease 10.1.0.20 {
        starts 1 2000/09/25 21:40:22;
        ends 1 2000/09/25 21:50:22;
        hardware ethernet 00:00:e8:5a:20:ee;
        uid 01:00:00:e8:5a:20:ee;
        client-hostname "X-MEN";
}

Padrao pretendido:

host X-MEN {
   hardware ethernet 00:00:e8:5a:20:ee;
   fixed-address 10.1.0.20;
}

Pq onde trabalho tenho 230 maquinas e preciso cadastrar cada maquina no
arquivo dhcpd.conf e tenho todas as informacoes no arquivo dhcpd.leases

Quem puder me ajudar ...


Agradeco mesmo !!


[]s
Leandro


From (no email address) Tue Oct 24 14:17:48 2000
Return-Path: <address@hidden>
X-Sender: address@hidden
X-Apparently-To: address@hidden
Received: (EGP: mail-6_1_0); 24 Oct 2000 21:17:47 -0000
Received: (qmail 18721 invoked from network); 24 Oct 2000 21:17:46 -0000
Received: from unknown (10.1.10.26) by m3.onelist.org with QMQP; 24 Oct 2000 
21:17:46 -0000
Received: from unknown (HELO burns.conectiva) (200.250.58.146) by mta1 with 
SMTP; 24 Oct 2000 21:17:44 -0000
Received: (qmail 14692 invoked from network); 24 Oct 2000 21:14:37 -0000
Received: from verde.distro.conectiva (10.0.17.77) by burns.conectiva with 
SMTP; 24 Oct 2000 21:14:37 -0000
Date: Tue, 24 Oct 2000 19:20:26 -0200 (BRST)
X-Sender: aurelio@verde.distro.conectiva
To: address@hidden
Subject: Re: RES: [shell-script] renomear arquivos
In-Reply-To: <4B813DAFDA55F14EA92BFABB590081A860B502@wtrjo081>
Message-ID: <Pine.LNX.4.21.0010241839480.942-100000@verde.distro.conectiva>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=iso-8859-1
Content-Transfer-Encoding: 8BIT
From: # aurelio marinho jargas <address@hidden>

@ 24/10, Julio Cezar Neves - DISB.O:

> Henrique, não vou nem responder só pra ver o "show de sed" que o Aurélio
> Jargas (o rei do expressão regular) vai dar :o).
> 
> Acho o > barato analisar as "reg exp" rebuscadas que ele usa.

ó não, fui intimado &:)

olha, e sed _dá_ pra fazer, mas eu aconselho outra ferramenta.
o próprio awk abaixo (que eu manjo nada) tá legal, curtinho.
o grande problema é que o sed não te um comando de
(des)capitalização como o toupper do awk, tem que fazer na mão
com o y/abcde...xyz/ABCDE...XYZ/


apenas como masturbação mental, tá aqui o cara com 3 sed's
seguidos. dá pra fazer em um só, mas aí fica muito pouco
didático...


conteúdo do txt:

TUDO MAIUSCULO.txt
tudo minusculo.txt
tUDo dOiDo.txt
varias VARIAS varias palaVRAS.txt


carinha:

cat txt | while read linha
do echo $linha |
   sed 's/^/ /;s/ \+/ /;
        y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/;
        s/ \(.\)/\n \1\n/g' |
   sed '/^ /{y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/;}' |
   sed ':a;$!N;s/\n//;ta;s/ //g'
done


resumo:

são 5 linhas de sed.

linha 1) normaliza os espaços em branco, cortando os seguidos.
linha 2) descapitaliza todo o texto
linha 3) deixa a primeira letra após um espaço em branco (começo
         de palavra) em uma linha sozinha com um espaço em branco
         na frente

nesse momento, a primeira linha 'TUDO MAIUSCULO.txt' fica assim:


 t
udo
 m
aiusculo.txt


linha 4) capitaliza apenas as linhas que começam co espaço em 
         branco
linha 5) rearranja a linha quebrada em uma linha apenas, apagando
         os espaços em branco

fim.


eu avisei, com o awk é mais fácil nesse caso &:)



> -----Mensagem original-----
> De: Henrique Limaverde Cabral de Lima [mailto:address@hidden]
> Enviada em: terça-feira, 24 de outubro de 2000 17:23
> Para: address@hidden
> Assunto: [shell-script] renomear arquivos
> 
> 
> Oi turma,
>    estou querendo renomear arquivos de forma que:
> + espacos em branco sejam removidos e
> + cada palavra do nome seja escrita com a primeira letra maiuscula e as
>   demais em minusculo
> 
> Por ex:
> 
> TUDO MAIUSCULO.txt
> tudo minusculo.txt
> tUDo dOiDo.txt
> varias VARIAS varias palaVRAS.txt
> 
> Deve ficar:
> 
> TudoMaiusculo.txt
> TudoMinusculo.txt
> TudoDoido.txt
> VariasVariasVariasPalavras.txt
> 
> Para isso, a ideia eh ler a entrada do ls e gerar um arquivo que contem um
> comando mv para cada arquivo. Na verdade eu consegui fazer com awk. Nao vi
> uma maneira de faze-lo em sed. Estou pedindo sugestoes (sed, awk, etc) 
> pois acho que pode existir uma maneira mais elegante...
> 
> Eis o codigo:
> 
> -x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-
> ls -d *.txt | awk '
> BEGIN {
>    FS="\\ "
>    OFS=""
> }
> {
>    printf "mv \"%s\" ", $0
>    for (i=1; i<NF; i++) {
>       prim=substr($i,1,1)
>       resto=substr($i,2)
>       $i=toupper(prim) tolower(resto)
>    }
>    printf "\"%s\"\n", $0
> }' > temp$$
> -x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-
> 
>    Obrigado
> 
>             Henrique Lima
> ---------------------------------------------------------------------
> 
> 
> 
> 
> Inscrição:     address@hidden
> 
> Sair da lista: address@hidden
> 
> Banco Dados:   http://www.egroups.com/group/shell-script
> 
> 
> Inscrição:     address@hidden
> 
> Sair da lista: address@hidden
> 
> Banco Dados:   http://www.egroups.com/group/shell-script
> 

-- 
s·:(·>(·×^a]×http://www.verde666.org×^[:wq



From (no email address) Tue Oct 24 14:52:37 2000
Return-Path: <address@hidden>
X-Sender: address@hidden
X-Apparently-To: address@hidden
Received: (EGP: mail-6_1_0); 24 Oct 2000 21:52:35 -0000
Received: (qmail 8119 invoked from network); 24 Oct 2000 21:45:55 -0000
Received: from unknown (10.1.10.26) by m4.onelist.org with QMQP; 24 Oct 2000 
21:45:55 -0000
Received: from unknown (HELO burns.conectiva) (200.250.58.146) by mta1 with 
SMTP; 24 Oct 2000 21:45:53 -0000
Received: (qmail 23161 invoked from network); 24 Oct 2000 21:42:45 -0000
Received: from verde.distro.conectiva (10.0.17.77) by burns.conectiva with 
SMTP; 24 Oct 2000 21:42:45 -0000
Date: Tue, 24 Oct 2000 19:48:34 -0200 (BRST)
X-Sender: aurelio@verde.distro.conectiva
To: Shell-Script <address@hidden>
Subject: Re: [shell-script] Script dhcpd.leases
In-Reply-To: <006801c03dfe$86cdddc0$e135bcc8@xmen>
Message-ID: <Pine.LNX.4.21.0010241942350.942-100000@verde.distro.conectiva>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=iso-8859-1
Content-Transfer-Encoding: 8BIT
From: # aurelio marinho jargas <address@hidden>

@ 24/10, Leandro Costa:
> Alguem tem um script que converta: o arquivo dhcpd.leases para um o seguinte
> padrao:
> 
> Exemplo dhcpd.leases
> lease 10.1.0.20 {
>         starts 1 2000/09/25 21:40:22;
>         ends 1 2000/09/25 21:50:22;
>         hardware ethernet 00:00:e8:5a:20:ee;
>         uid 01:00:00:e8:5a:20:ee;
>         client-hostname "X-MEN";
> }
> 
> Padrao pretendido:
> 
> host X-MEN {
>    hardware ethernet 00:00:e8:5a:20:ee;
>    fixed-address 10.1.0.20;
> }

tá, já que hoje é o "dia do sed", lá vai &:)

cat dhcpd.leases |
sed -n 's/.*client-hostname "\(.*\)";/host \1 {/p;
        /hardware ethernet/s/^ */   /p;
        s/^lease \([0-9.]*\) {/   fixed-address \1;/p;
        /^}/p' |
sed '/^   fixed/{N;N;s/\(.*\)\(\n\)\(.*\)\n\(.*\)/\4\2\3\2\1/;}'


o primeiro sed deixa o arquivo assim:
   fixed-address 10.1.0.20;
   hardware ethernet 00:00:e8:5a:20:ee;
host X-MEN {
}

e o segundo sed apenas reordena as linhas, trocando as linhas
1,2,3,4 para 3,2,1,4


-- 
s·:(·>(·×^a]×http://www.verde666.org×^[:wq


From (no email address) Tue Oct 24 15:07:43 2000
Return-Path: <address@hidden>
X-Sender: address@hidden
X-Apparently-To: address@hidden
Received: (EGP: mail-6_1_0); 24 Oct 2000 22:07:42 -0000
Received: (qmail 15927 invoked from network); 24 Oct 2000 22:04:45 -0000
Received: from unknown (10.1.10.26) by m4.onelist.org with QMQP; 24 Oct 2000 
22:04:45 -0000
Received: from unknown (HELO burns.conectiva) (200.250.58.146) by mta1 with 
SMTP; 24 Oct 2000 22:04:43 -0000
Received: (qmail 26155 invoked from network); 24 Oct 2000 22:01:33 -0000
Received: from verde.distro.conectiva (10.0.17.77) by burns.conectiva with 
SMTP; 24 Oct 2000 22:01:33 -0000
Date: Tue, 24 Oct 2000 20:07:22 -0200 (BRST)
X-Sender: aurelio@verde.distro.conectiva
To: address@hidden
Subject: Re: RES: [shell-script] renomear arquivos
In-Reply-To: <Pine.GSO.4.05.10010241745050.7969-100000@angra>
Message-ID: <Pine.LNX.4.21.0010242003050.942-100000@verde.distro.conectiva>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=iso-8859-1
Content-Transfer-Encoding: 8BIT
From: # aurelio marinho jargas <address@hidden>

@ 24/10, Henrique Limaverde Cabral de Lima:

> > Henrique, não vou nem responder só pra ver o "show de sed" que o Aurélio
> > Jargas (o rei do expressão regular) vai dar :o).
> > 
> > Acho o > barato analisar as "reg exp" rebuscadas que ele usa.
> 
> Pois eh, eu nao achei foi um jeito de transformar em maiusculas apenas uma
> parte da expressao (por exemplo "\\ [a-z]" :( A unica maneira que eu
> conheco de transformar maiusculas em minusculas eh com y///, mas ele se
> aplica aa linha toda nao?

exato, por isso na outra mensagem, tive que separar cada letra do
início de cada palavra numa linha exclusiva dela, para aplicar o
y///. é xunxo, mas funciona &:)


>    Tambem gostaria de ver uma solucao mais elegante (tenho ateh vergonha
> de mostrar esse que eu fiz :)

a do awk tá boa. creio que em perl dê pra fazer em 1 linha.
mas eu entendo lhufas de perl...


-- 
s·:(·>(·×^a]×http://www.verde666.org×^[:wq



reply via email to

[Prev in Thread] Current Thread [Next in Thread]