usando o mergecap para um conjunto de arquivos

0

Estou tentando usar o mergecap para mesclar 15 arquivos pcap antigos em uma pasta. Eu tentei usar

FILES=($(find /mnt/md0/capture/DCN/ -maxdepth 1 -type f -name "*.pcap"  -print0 | xargs -0 ls -lt | tail -15 | awk '{print $8}'))

e use o comando mergecap como mergecap -w Merge.pcap ${FILES[@]} , mas o mergecap não é executado quando eu o coloco no crontab. Existe algum método para combinar esses dois comandos para funcionar corretamente?

Eu tentei como resposta sugerida @l0b0 tried find /mnt/md0/capture/DCN/ -maxdepth 1 -type f -name "*.pcap" -print0 | tr '%code%\n' '\n%code%' | tail -15 | tr '%code%\n' '\n%code%' | xargs -r0 mergecap -w /mnt/md0/capture/DCN/Merge_"${TAG1}".pcap a fim de obter o nome do arquivo mais antigo a ser mesclado no nome dos arquivos de saída. Mas dá um jargão como o nome do arquivo. Estou fazendo algo errado? Seguintes scripts me obtém os nomes dos arquivos

FILES=($(find /mnt/md0/capture/DCN/ -maxdepth 1 -type f -name "*.pcap"  -print0 | xargs -0 ls -lt | tail -15 | awk '{print $8}'))

TAG1=$(basename "${FILES[0]}" | sed 's/.pcap//')
    
por Jishnu U Nair 06.02.2014 / 13:38

2 respostas

2

Com zsh ( novamente ):

mergecap -w Merge.pcap /mnt/md0/capture/DCN/(D.om[-15,-1])

Ou com ferramentas GNU:

cd /mnt/md0/capture/DCN/ &&
  find . -maxdepth 1 -name '*.pcap' ! -name Merge.pcap -type f  -printf '%T@@%p
mergecap -w Merge.pcap /mnt/md0/capture/DCN/(D.om[-15,-1])
' | tr '
cd /mnt/md0/capture/DCN/ &&
  find . -maxdepth 1 -name '*.pcap' ! -name Merge.pcap -type f  -printf '%T@@%p%pre%' |
    tr '%pre%\n' '\n%pre%' |
    sort -n |
    head -n 15 |
    cut -d@ -f2- |
    tr  '%pre%\n' '\n%pre%' |
    xargs -r0 mergecap -w Merge.pcap
\n' '\n%pre%' | sort -n | head -n 15 | cut -d@ -f2- | tr '%pre%\n' '\n%pre%' | xargs -r0 mergecap -w Merge.pcap
    
por 06.02.2014 / 14:33
1

Você pode usar um truque para usar tail na saída delimitada por NUL :

find /mnt/md0/capture/DCN/ -maxdepth 1 -type f -name "*.pcap" -print0 |
  tr '
find /mnt/md0/capture/DCN/ -maxdepth 1 -type f -name "*.pcap" -print0 |
  tr '%pre%\n' '\n%pre%' |
  tail -n 15 |
  tr '%pre%\n' '\n%pre%' |
  xargs -r0 mergecap -w Merge.pcap
\n' '\n%pre%' | tail -n 15 | tr '%pre%\n' '\n%pre%' | xargs -r0 mergecap -w Merge.pcap

E você não deve analisar ls output.

    
por 06.02.2014 / 13:57