A alternativa de linha de comando ao WireShark é tshark (semelhante em função ao tcpdump).
Este blog teve o suficiente para obter eu comecei.
Um exemplo de comando tshark capture é o seguinte (digamos que você queira monitorar a interface eth0):
sudo tshark -i eth0
Também podemos adicionar filtros de captura ao comando:
sudo tshark -i eth0 "port 6633"
Este comando irá capturar todo o tráfego de e para a porta 6633 (a porta padrão dos controladores OpenFlow)
Simplesmente capturar o tráfego não é suficiente. Para analisar a captura através de um programa, precisamos primeiro converter a captura em um formato facilmente compreensível. Insira o XML.
sudo tshark -i eth0 -T pdml > dump.xml
Isso gera o arquivo de captura como um arquivo xml com todos os pacotes junto com seus vários atributos como tags.
Isso pode ser analisado subseqüentemente usando qualquer analisador xml padrão.
Algumas coisas extras que eu ajustei: eu desmontei a "porta 6633". E acrescentou uma opção -n (endereços não são resolvidos). Os pacotes adicionais que são capturados como resultado podem sempre ser filtrados pelo analisador xml. Como meu aplicativo dava uma pequena importância aos timestamps de vários pacotes, eu não queria causar atrasos adicionais devido à filtragem / resolução. Note que eu posso estar terrivelmente errado no meu raciocínio aqui (foi apenas um palpite). Cada pacote possui um registro de data e hora adicionado pelo adaptador de rede quando o dispositivo recebe o mesmo. Portanto, é mais do que provável que o uso de tais truques não afetaria o registro de tempo.
Meu comando final foi, portanto:
sudo tshark -n -i eth0 -T pdml > dump.xml
NOTA ADICIONAL: Se você está habituado a usar o WireShark para depurar pacotes OpenFlow, você provavelmente usa o filtro de exibição: "de". No entanto, este não é um filtro de captura válido que é exigido pelo tshark (os filtros de captura são semelhantes aos usados no tcpdump)
PS: Envie-me uma linha se precisar do analisador xml (usei python)