Contagem de objetos da AWS e aviso se muitos

0

Estou tentando criar um script bash. Quando executo o comando AWS, recebo um "Total de Objetos" na parte inferior dos resultados. Eu quero disparar um aviso se for maior que 50 objetos.

aws s3 ls test.domain.com/dir1/dir2/dir3/ --human-readable --summarize
value=$( grep -ic "Total Objects")
if [ $value -gt 50 ]
then 
  echo "Warning"
fi

Aqui está o código atualizado:

value=$(aws s3 ls test.domain.com/dir1/dir2/dir3/  --human-readable --summarize | grep -ic "Total Objects")
if [ $value -gt 10 ];
then
    echo "Warning"
fi

Por favor, deixe-me saber o que estou fazendo de errado.

    
por ITDevon 11.01.2017 / 04:41

3 respostas

2

Incorpore aws e grep dentro da substituição de comando, $() :

value=$(aws s3 ls test.domain.com/dir1/dir2/dir3/ --human-readable --summarize | grep -ic "Total Objects")

Atualmente, você está recebendo a saída de aws para STDOUT e grep não tem nenhum arquivo para operar.

    
por 11.01.2017 / 04:46
0
$ value=$(echo 'Total Objects: 53 Total Size: 7.0 MiB '|grep -oP '(?<=Total Objects: )\d+')
$ echo $value
53
    
por 11.01.2017 / 05:27
0

Eu decidi seguir um caminho diferente, usei esse código para realizar o que queria fazer.

#!/bin/bash
value=$(aws s3 ls bucket/dir1/dir2/ -- recursive --human-readable --summarize | grep .file type | wc -l)
if [ $value -gt 1000 ];
then
      echo "$value Warning"
      exit 2
fi

Obrigado a todos pela ajuda

Devon

    
por 12.01.2017 / 20:40