Processamento de timestamps da saída tcpdump em tempo real

3

Eu gostaria de manter um arquivo que contém o número de segundos desde que um pacote que corresponde a um filtro tcpdump foi visto. O objetivo é descobrir quando um cliente tagarela não está mais na rede. Quando eu paro de ver lixo do MDNS, tenho certeza que se foi.

sudo tcpdump -l -tttt -i wlan0 port 5353 and src <hostname> | cut -c -19 | xargs -0 -n1 ./timesec.sh

É o que eu tenho até agora. timesec.sh usará o argumento de entrada em date -d para comparar com uma data armazenada de um arquivo e, em seguida, atualizar o número de segundos do arquivo.

No entanto, não está funcionando e suspeito que a saída de cut não esteja funcionando como esperado.

    
por JonFitt 02.04.2017 / 07:43

1 resposta

0

Acho que você precisa remover o -0 da linha de comando xargs. O -0 é usado para separar os campos por meio da terminação nula e, até onde eu sei, cut não suporta isso. Em vez disso, sugiro usar -d '\n' para finalizar os campos nas quebras de linha:

... | cut -c -19 | xargs -d '\n' -n1 ./timesec.sh

Dos documentos

-0

Input items are terminated by a null character instead of by whitespace, and the quotes and backslash are not special (every character is taken literally). Disables the end of file string, which is treated like any other argument. Useful when input items might contain white space, quote marks, or backslashes. The GNU find -print0 option produces input suitable for this mode.

--delimiter=delim

-d delim

Input items are terminated by the specified character. Quotes and backslash are not special; every character in the input is taken literally. Disables the end-of-file string, which is treated like any other argument. This can be used when the input consists of simply newline-separated items, although it is almost always better to design your program to use --null where this is possible. The specified delimiter may be a single character, a C-style character escape such as \n, or an octal or hexadecimal escape code. Octal and hexadecimal escape codes are understood as for the printf command. Multibyte characters are not supported.

    
por 03.04.2017 / 04:49