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

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

Re: [shell-script] Converte o arquivo dhcpd.leases ===> dhcpd.conf


From: Eliphas Levy Theodoro
Subject: Re: [shell-script] Converte o arquivo dhcpd.leases ===> dhcpd.conf
Date: Mon, 21 May 2001 15:03:10 -0300 (BRT)

Leandro Costa, @ 17/05/01 - 22:27:

> Ola Galera !!!!
>
> Alguem conhece algum script pronto que trate deste caso.
>
> tenho as seguintes informacoes:
> dhcpd.leases
>
> lease 10.1.0.118 {
>         starts 5 2001/05/18 01:03:42;
>         ends 5 2001/05/18 01:13:42;
>         hardware ethernet 00:01:02:3d:a5:3f;
>         uid 01:00:01:02:3d:a5:3f;
>         client-hostname "SIMATIC";
> }
[...]
> e Gere o resultado assim:
>
> ### SIMATIC
>     host SIMATIC {
>     hardware ethernet 00:01:02:3d:a5:3f;
>      fixed-address 10.1.1.118;
>     }
>
> As seguintes informacoes foram tiradas do arquivo dhcpd.leases:
> SIMATIC, 00:01:02:3d:a5:3f; 10.1.1.118;

Não pensei em todas as possibilidades, mas se cada seção for igual (7
linhas na mesma ordem acima):

sed ':a;$bb;N;ba;:b;s/\([^}]\)\n/\1/g' |
sed 's/lease \([0-9.]\+\) {.*net \([0-9a-f:]\+\);.*ame "\([^"]\+\)".*/# 
\3\nhost \3 {\nhardware ethernet \2;\nfixed-address \1;\n}/'

Sim, espere o aurélio explicar como funciona isso aí e apresentar uma
idéia menor e mais eficiente ':)
Eu tou pouco inspirado hoje...

-- 
Eliphas
Get forgiveness now -- tomorrow you may no longer feel guilty.


From (no email address) Mon May 21 12:26:46 2001
Return-Path: <address@hidden>
X-Sender: address@hidden
X-Apparently-To: address@hidden
Received: (EGP: mail-7_1_3); 21 May 2001 19:26:45 -0000
Received: (qmail 59292 invoked from network); 21 May 2001 19:26:44 -0000
Received: from unknown (10.1.10.27) by m8.onelist.org with QMQP; 21 May 2001 
19:26:44 -0000
Received: from unknown (HELO perninha.conectiva.com.br) (200.250.58.156) by 
mta2 with SMTP; 21 May 2001 19:26:42 -0000
Received: from burns.conectiva (burns.conectiva [10.0.0.4]) by 
perninha.conectiva.com.br (Postfix) with SMTP id CC5A416B18 for 
<address@hidden>; Mon, 21 May 2001 16:26:36 -0300 (EST)
Received: (qmail 30771 invoked by uid 0); 21 May 2001 19:25:02 -0000
Received: from verde.distro.conectiva (10.0.17.77) by burns.conectiva with 
SMTP; 21 May 2001 19:25:02 -0000
Date: Mon, 21 May 2001 16:34:29 -0300 (BRT)
X-Sender: verde@verde.distro.conectiva
To: Shell-Script <address@hidden>
Subject: Re: [shell-script] Converte o arquivo dhcpd.leases ===> dhcpd.conf
In-Reply-To: <Pine.LNX.4.33.0105211421030.974-100000@lilica.distro.conectiva>
Message-ID: <Pine.LNX.4.21.0105211623430.782-100000@verde.distro.conectiva>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=iso-8859-1
Content-Transfer-Encoding: 8BIT
X-eGroups-From: # aurelio marinho jargas <address@hidden>
From: # aurelio marinho jargas <address@hidden>

@ 21/5, Eliphas Levy Theodoro:
> Leandro Costa, @ 17/05/01 - 22:27:
> > lease 10.1.0.118 {
> >         starts 5 2001/05/18 01:03:42;
> >         ends 5 2001/05/18 01:13:42;
> >         hardware ethernet 00:01:02:3d:a5:3f;
> >         uid 01:00:01:02:3d:a5:3f;
> >         client-hostname "SIMATIC";
> > }
> [...]
> > ### SIMATIC
> >     host SIMATIC {
> >     hardware ethernet 00:01:02:3d:a5:3f;
> >      fixed-address 10.1.1.118;
> >     }
> > As seguintes informacoes foram tiradas do arquivo dhcpd.leases:
> > SIMATIC, 00:01:02:3d:a5:3f; 10.1.1.118;
> 
> Não pensei em todas as possibilidades, mas se cada seção for igual (7
> linhas na mesma ordem acima):
> 
> sed ':a;$bb;N;ba;:b;s/\([^}]\)\n/\1/g' |
> sed 's/lease \([0-9.]\+\) {.*net \([0-9a-f:]\+\);.*ame "\([^"]\+\)".*/# 
> \3\nhost \3 {\nhardware ethernet \2;\nfixed-address \1;\n}/'
> 
> Sim, espere o aurélio explicar como funciona isso aí e apresentar uma
> idéia menor e mais eficiente ':)
> Eu tou pouco inspirado hoje...

putz, eu nem ia me coçar pra essa, mas já que fui tão gentilmente
citado... &:)

sed -n 's/^ *//;s/"\?[{;]$//;s/^lease //p;s/^.*hostname "//p;/ethernet/p' |
sed 'N;N;s/\(.*\)\n\(.*\)\n\(.*\)/### \3\n  host \3 {\n  \2;\n  fixed-address 
\1;\n  }/'


  o primeiro sed apenas limpa as linhas de interesse, cuspindo:

10.1.0.118
hardware ethernet 00:01:02:3d:a5:3f
SIMATIC

  e o segundo pesca essas linhas e formata no padrão desejado:

### SIMATIC
  host SIMATIC {
  hardware ethernet 00:01:02:3d:a5:3f;
  fixed-address 10.1.0.118 ;
  }


não sei direito se esse é menor ou mais eficiente, é apenas outra
alternativa, usando uma técnica diferente.


eliphas: o primeiro sed junta todas as linhas do registro numa só
         o segundo sed substitui as partes da minhocona pelas cadeias
                 novas.

mas a solução mais limpa e mantenível é fazer um shellzinho com uns greps
para pegar os valores desejados e jogá-los numa variável. depois um
echo faz o serviço de mostrar tudo...

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



reply via email to

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