Estou usando o tshark para decodificar rapidamente o protocolo SMPP, por exemplo:
tshark -i any -V -Y smpp
Isso mostrará, em tempo real, cada pacote SMPP, por exemplo
Short Message Peer to Peer, Command: Submit_sm, Seq: 8475778, Len: 215
Length: 215
Operation: Submit_sm (0x00000004)
Sequence #: 8475778
Service type: (Default)
Type of number (originator): Alphanumeric (0x05)
Numbering plan indicator (originator): Unknown (0x00)
Originator address: \123\110\123\123\123aaa\123
Type of number (recipient): Unknown (0x00)
Numbering plan indicator (recipient): ISDN (E163/E164) (0x01)
Recipient address: 44123456789
.... ..00 = Messaging mode: Default SMSC mode (0x00)
..00 00.. = Message type: Default message type (0x00)
00.. .... = GSM features: No specific features selected (0x00)
Protocol id.: 0x43
Existe uma maneira de grep campos específicos e gerar somente estes? Eu tentei com:
tshark -i any -V -Y smpp | grep 'Operation|Type of number|Numbering plan indicator|Recipient address'
Mas não funciona. Eu tentei também com:
tshark -i any -V -Y smpp -T fields -e 'smpp.dest_addr_ton' -e 'smpp.destination_addr'
Mas isso produzirá apenas o valor e eu gostaria de produzir algo como;
Type of number (recipient): Unknown (0x00)
Numbering plan indicator (recipient): ISDN (E163/E164) (0x01)
Recipient address: 44123456789
Alguém poderia me dar um conselho? Obrigado, Lucas
Para usar alterações (
|
) em uma expressão regular, você deve habilitar o suporte estendido de expressão regular para ,grep
pois este não é um recurso de expressões regulares básicas. Você faz isso usandogrep
com sua-E
opção:Como alternativa, você pode usar várias expressões básicas separadas, cada uma fornecida por meio de
-e
(também estou usando-F
aqui porque todas as expressões são strings simples, não expressões regulares reais):