[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] script com o log do dhpcd
From: |
Aurelio Marinho Jargas |
Subject: |
Re: [shell-script] script com o log do dhpcd |
Date: |
Thu, 25 Nov 2004 13:32:44 -0300 (ART) |
oi bruno,
--- Bruno Tobias Stella <address@hidden> escreveu:
> > > lease 172.16.10.10 {
> > > starts 2 2004/11/23 12:04:44;
> > > ends 2 2004/11/30 12:04:44;
> > > binding state active;
> > > next binding state free;
> > > hardware ethernet 00:d0:09:fd:96:ea;
> > > uid "\001\000\320\011\375\226\352";
> > > client-hostname "Micro_do_Jose";
> > > }
> > > passo ao script o IP 172.16.10.10 como parâmetro e recebo
> > > "Micro_do_Jose".
...
> > uma maneira mais esperta é filtrar somente as linhas
> > com IP e nome, no log, usando um egrep:
> > egrep 'lease|client-hostname' dhcpd.log
> > e depois fica mais fácil extrair a linha de baixo do IP,
> > com outro grep por exemplo.
>
> Desculpe a minha ignorância, mas como eu pegaria com um grep a linha
> debaixo do IP ?
usa a opção -A (the After, do inglês Depois), assim:
$ seq 5 | grep -A1 3
3
4
$ seq 5 | grep -A1 3 | tail -1
4
com o -A1 você pega a linha do IP e a seguinte, e com
o tail -1 (ou sed 1d) você apaga a linha do IP.
> > ou ainda, um único SED que é pequeno mas exige mais
> > conhecimentos para entendê-lo:
> > IP="$1"
> > cat dhcpd.log |
> > sed -n "/^lease $IP {/,/}/{ s/client-hostname //p; }"
...
> Aurélio, se não for pedir muito, você poderia explicar só um
> pouquinho este comando do sed?
é um endereço que indica um trecho de linhas e um comando s///
primeiro é definido o trecho da entrada completa do log
que começa numa linha como "lease 10.0.0.1 {" e vai até
a linha que fecha as chaves "}":
/^lease $IP {/ , /}/
para este trecho de linhas, é aplicado o comando que mostra
apenas a linha do "cliente-hostname", apagando essa string
e sobrndo apenas o nome da máquina:
s/client-hostname //p
ele só mostra essa linha e nao todas as outras do registro
porque o sed foi chamado com a opção -n, que não mostra
nada na saída, a não ser que o comando Print seja usado,
e é por isso que tem aquele "p" no final do s///.
no email original eu coloquei o s/// entre {chaves}, mas
como é só um comando não precisa:
sed -n "/^lease $IP {/ , /}/ s/client-hostname //p"
beleza?
=====
--
Aurelio Marinho Jargas, Curitiba, Conectiva
Funcoes ZZ v4.1111 http://aurelio.net/zz
txt2tags v2.1 http://txt2tags.sf.net/pt
_______________________________________________________
Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora!
http://br.acesso.yahoo.com/
RES: [shell-script] Ajuda ao shell-script, Marcelo Teles Provin, 2004/11/23