Solução otimizada:
awk '/UNREACHABLE/{ print $7 }' /var/log/asterisk/full | sort -u \
| xargs -I % asterisk -rx 'sip show peer %' \
| grep "Callerid\|Useragent\|Name\|Addr->IP" \
| awk -F':' '1;/Addr->IP/{ system("ping -c4 "$2)}'
Eu quero usar um dos valores de um comando e usá-lo em um comando diferente Exemplo de Comando é o seguinte
cat /var/log/asterisk/full |
grep "UNREACHABLE" |
awk '{print $7;}'|
sort | uniq |
xargs -I % asterisk -rx 'sip show peer %'|
grep "Callerid\|Useragent\|Name\|Addr->IP"
As linhas que passam UNREACHABLE são as seguintes.
[Oct 8 04:10:55] NOTICE[29814] chan_sip.c: Peer 'sip-437-id' is now UNREACHABLE! Last qualify: 26
awk '{print $7;}'
'sip-437-id' Eu recebo esta informação
sort | uniq
apenas o dispositivo de classificação e uniq
xargs -I % asterisk -rx 'sip show peer %'
Eu recebo mais informações de xargs com essa extensão de usuário
* Name : sip-437-id
Secret : <Set>
MD5Secret : <Not set>
Remote Secret: <Not set>
Context :default
Subscr.Cont. : default
Language :
AMA flags :Unknown
Transfer mode: open
CallingPres :
Presentation Allowed,Not Screened
Callgroup :
Pickupgroup :
MOH Suggest :
Mailbox : 492@default
VM Extension : asterisk
LastMsgsSent : 0/0
Call limit : 2
Max forwards : 0
Dynamic : Yes
Callerid : "TELEPHONE" <492>
MaxCallBR : 384 kbps
Expire : 1671
Insecure : no
Force rport : No
ACL : Yes
DirectMedACL : No
T.38 support : No
T.38 EC mode : Unknown T.38
> MaxDtgrm: 4294967295
DirectMedia : No
PromiscRedir : No
> User=Phone : No
Video Support: No
Text Support : No
Ign SDPver : No
Trust RPID : Yes
Send RPID : Yes
TrustIDOutbnd:Legacy
Subscriptions: Yes
Overlap dial : Yes
DTMFmode :rfc2833
Timer T1 : 500
Timer B : 32000
ToHost :
Addr->IP : 10.34.34.45:5063
Defaddr->IP : (null)
Prim.Transp. : UDP
Allowed.Trsp : UDP Def. U
sername: sip-492-id
SIP Options : (none)
Codecs : 0x10c (ulaw|alaw|g729)
Codec Order : (g729:20,ulaw:20,alaw:20)
Auto-Framing : No
Status : OK (26 ms)
Useragent : Yealink SIP-T20P 9.61.0.85
Reg. Contact : sip:sip-437-id @10.34.34.45:5063
Qualify Freq : 60000 ms
Sess-Timers : Accept
Sess-Refresh : uas
Sess-Expires : 1800 secs
Min-Sess : 90 secs
RTP Engine : asterisk
Parkinglot :
Use Reason : No
Encryption : No
grep "Callerid\|Useragent\|Name\|Addr->IP"
Eu recebo as informações de que preciso com essas informações.
> * Name : sip-437-id
> Callerid : "TELEPHONE" <492>
> Addr->IP : 10.34.34.45:5063
> Useragent : Yealink SIP-T20P 9.61.0.85
> Addr->IP : 10.34.34.45:5063
esta informação será escrita na tela End. > IP: 10.34.34.45:5063
Eu quero fazer o ping do endereço IP e imprimi-lo sob as informações
por exemplo:
> * Name : sip-437-id
> Callerid : "TELEPHONE" <492>
> Addr->IP : 10.34.34.45:5063
> Useragent : Yealink SIP-T20P 9.61.0.85
> PING 10.34.34.45 (10.34.34.45) 56(84) bytes of data. 64 bytes from
> 10.34.34.45: icmp_req=1 ttl=62 time=6.22 ms 64 bytes from
> 10.34.34.45: icmp_req=2 ttl=62 time=6.25 ms
deve mostrar o resultado e continuar processando