Requer saída em linhas separadas - Shell Script

0

Eu escrevi este script para registrar e-mails se o espaço em disco for maior que 90. Por favor, me ajude a obter a saída em linhas separadas. Aqui está o meu código:

#!/bin/bash

errortext=""

EMAILS="[email protected]"


for line in 'df | awk '{print$6, $5, $4, $1} ' '
do

# get the percent and chop off the %
percent='echo "$line" | awk -F - '{print$5}' | cut -d % -f 1'
partition='echo "$line" | awk -F - '{print$1}' | cut -d % -f 1'

# Let's set the limit to 90% when alert should be sent
limit=90

if [[ $percent -ge $limit ]]; then
    errortext="$errortext $line"
fi
done

# send an email
if [ -n "$errortext" ]; then
echo "$errortext" | mail -s "NOTIFICATION: Some partitions on almost 
full"         $EMAILS
fi
    
por Ankkur Singh 11.05.2018 / 13:51

1 resposta

2

Não tente salvar a saída em variáveis e não tente iterar a saída de comandos quando não precisar.

#!/bin/bash

mailto=( [email protected] [email protected] )
tmpfile=$( mktemp )

df | awk '0+$5 > 90' >"$tmpfile"

if [ -s "$tmpfile" ]; then
    mail -s 'NOTIFICATION: Some partitions on almost full' "${mailto[@]}" <"$tmpfile"
fi

rm -f "$tmpfile"

Isso envia as linhas relevantes da saída df aos endereços listados na matriz mailto se houver linhas cujas porcentagens excedam 90%. O 0+$5 forçará awk a interpretar o quinto campo como um número. O teste -s em um arquivo será bem-sucedido se o arquivo não estiver vazio. mktemp cria um arquivo temporário e retorna seu nome.

    
por 11.05.2018 / 13:57