Como usar para loop sob o loop for

0

Neste script, ele obtém a lista de servidores do arquivo vmr.txt e depois tenta localizar arquivos de log com mais de 500M e movimentação.

Eu fiquei aqui com o redirecionamento de busca, eu passo a saída múltipla de achados para o próximo comando no lado do loop for.

#!/bin/bash -x

$tdate='date +%Y%m%d-%H%M%S'

for vm in '(cat /nodes/vmr.txt | awk '{print$2}'|| sed -e 's/[[:space:]]*$//')'
do

ssh pbc01@$vm 'find /var/log/vmr/ -type f -size +500M |grep -v ".gz"'

ssh pbc01@$vm gzip -c $file > "$file"."$tdate".gz && cp -v /dev/null "$file"
ssh pbc01@$vm  mv /var/log/vmr/*.gz /vmr/oldlog/
  done
    
por Sidh 02.07.2017 / 16:16

1 resposta

0

Você deve evitar o processamento da saída de ls ou, equivalentemente aqui, find . Tudo o que você está fazendo pode ser um único comando de localização:

ssh pbc01@"$vm" find /var/log/vmr -type f -size +500M -not -name '*gz' -exec sh -c 'gzip -c "$1" > "$1.$tdate.gz"' "" {} \; -exec truncate -s 0 {} \;

você pode até mesmo ter o gzip escrevendo diretamente para /vmr/oldlog em vez de movê-lo depois colocando apenas esse caminho como parte do destino do gzip

    
por 02.07.2017 / 17:16