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

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

Re: [shell-script] Tratar retorno de comando do prompt


From: Fredi Bieging
Subject: Re: [shell-script] Tratar retorno de comando do prompt
Date: Tue, 6 Nov 2012 08:40:31 -0200

Diramos, mandar a saída do asterisk direto pro paste não rola. Faz assim:

asterisk=$(/usr/sbin/asterisk -r -x "khomp links show")
paste -d ':' <(grep -Eo 'Link [^-]*' <<< "$asterisk" | sed 's/ *$//')
<(grep -Eo '(Up|Down)[^\|]*' <<< "$asterisk" | sed 's/ *$//') | sed
':a;N;$!ba;s/\n/, /g'

Tiago, concordo que se der pra usar só o sed ficaria mais bonito. Mas como
pode ter mais que um match na mesma linha, não sei como ficaria isso no sed.



2012/11/4 <address@hidden>

> Grande Fredi!
> Seu comando parece funcionar sim.
> Mas só às vezes. rsrsrsrs.
> Veja os retornos:
>
> sp7437sr032:/tmp# /usr/sbin/asterisk -r -x "khomp links show" | paste -d
> ':' <(grep -Eo 'Link [^-]*' | sed 's/ $//') <(grep -Eo '(Up|Down)[^\|]*' |
> sed 's/ $//') | sed ':a;N;$!ba;s/\n/,/g'
>
> Link '0' on board '0':,Link '1' on board '0':
>
> sp7437sr032:/tmp# /usr/sbin/asterisk -r -x "khomp links show" | paste -d
> ':' <(grep -Eo 'Link [^-]*' | sed 's/ $//') <(grep -Eo '(Up|Down)[^\|]*' |
> sed 's/ $//') | sed ':a;N;$!ba;s/\n/,/g'
>
> :Up (sync)                        ,:Up (sync)
>
> sp7437sr032:/tmp# /usr/sbin/asterisk -r -x "khomp links show" | paste -d
> ':' <(grep -Eo 'Link [^-]*' | sed 's/ $//') <(grep -Eo '(Up|Down)[^\|]*' |
> sed 's/ $//') | sed ':a;N;$!ba;s/\n/,/g'
>
> Link '0' on board '0':,Link '1' on board '0':
>
> sp7437sr032:/tmp# /usr/sbin/asterisk -r -x "khomp links show" | paste -d
> ':' <(grep -Eo 'Link [^-]*' | sed 's/ $//') <(grep -Eo '(Up|Down)[^\|]*' |
> sed 's/ $//') | sed ':a;N;$!ba;s/\n/,/g'
>
> Link '0' on board '0':,Link '1' on board '0':
>
> sp7437sr032:/tmp# /usr/sbin/asterisk -r -x "khomp links show" | paste -d
> ':' <(grep -Eo 'Link [^-]*' | sed 's/ $//') <(grep -Eo '(Up|Down)[^\|]*' |
> sed 's/ $//') | sed ':a;N;$!ba;s/\n/,/g'
>
> Link '0' on board '0':Up (sync)                        ,Link '1' on board
> '0':Up (sync)
>
> Este último é o que deveria sempre retornar. Porem, sem o espaço grande
> antes da vírgula. Assim:
>
> Link '0' on board '0':Up (sync), Link '1' on board '0':Up (sync)
> O que será que acontece?
>
> Outra coisa: percebi que se eu direcionar a saída prá arquivo, o arquivo
> gerado fica com uns carecteres estranhos no início e final, que só percebo
> quando entro para edição com o vi. Veja:
>
>  ^[[0;37;40m<K>
> ------------------------------------------------------------------------
>
> <K> |--------------------------- Khomp Links List
> ---------------------------|
> <K>
> |------------------------------------------------------------------------|
>
> <K> |------ Link '0' on board '0' ------||------ Link '1' on board '0'
> ------|
> <K> | Up (sync)                         || Up
> (sync)                         |
> <K>
> ------------------------------------------------------------------------
> ^[[0m
>
> O que poderia ser?
> Será que dá prá acertar o comando?
> Estou tentando mandar o arquivo em formatyo tar.gz aneso. Pois aqui fica
> truncado o texto.
> Grato pela ajuda.
>
> Diramos
>
>
>
>
> ------------------------------
> Em 01/11/2012 15:04, *address@hidden* escreveu:
>
>
>
> ------------------------------
> *Mensagem original*
> *De:* Fredi Bieging < address@hidden >
> *Para:* address@hidden
> *Assunto:* Re: [shell-script] Tratar retorno de comando do prompt
> *Enviada:* 01/11/2012 09:44
>
>
> Assumindo que eu traduzi o formato da saída do Asterisk corretamente:
>
> paste -d ':' <(grep -Eo 'Link [^-]*' asterisk.txt | sed 's/ $//') <(grep
> -Eo '(Up|Down)[^\|]*' asterisk.txt | sed 's/ $//') | sed ':a;N;$!ba;s/\n/,
> /g'
>
> 2012/10/31 <address@hidden>
>
> > **
> >
> >
> >
>
> >
> Pessoal,
>
> >
>
>
> >
> Tenho uma saída de comando (Asterisk), que me retorna o seguinte no
> > terminal:
>
> >
>
>
> >
> ----------------------------------------------------------<br
> > />|--------------------------- Khomp Links List
> > ---------------------------|<br
> > />|----------------------------------------------------------|
> |------
> > Link '0' on board '0' ------||------ Link '1' on board '0'
> ------------|<br
> > />| Up (sync) || Up (sync) |
>
> >
> |------ Link '0' on board '1' ------||------ Link '1' on board '1'
> > ------------|
> | Down (failed) || Up (sync) |<br
> > />----------------------------------------------------------
>
> >
> Segue anexo o retorno em formato .txt.
>
> >
> Preciso filtrar esse retorno, de modo que fique assim:
>
> >
> Link '0' on board '0': Up (sync), Link '1' on board '0':Up (sync),
> > Link '0' on board '1':Down (failed),Link '1' on board '1':Up (sync)
>
> >
>
>
> >
> Ou seja, pegar somente as informações centrais e concatenar com
> > vírgula.
>
> >
> Detalhe complicador: o retorno é variável, pois dependendendo do
> > equipamento, aumenta ou diminui o numero dos links.
>
> >
>
>
> >
> Já tentei com awk, sed, grep, mas nada que chegue ao que quero.
>
> >
>
>
> >
>
>
> >
> Poderiam ajudar?
>
> >
>
>
> >
> Grato.
>
> >
>
> > ----------
> >
> > ----------------------------------------------------------
>
> > |--------------------------- Khomp Links List
> > ---------------------------|
> > |----------------------------------------------------------|
>
> > |------ Link '0' on board '0' ------||------ Link '1' on board '0'
> > ------|
> > | Up (sync) || Up (sync) |
>
> > ----------------------------------------------------------
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem
> prévio aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
> Links do Yahoo! Grupos
>
>
>
>
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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