producir comando df un gran sistema de archivos específico total
Solo necesito hacer algo básico que podría manejar por mi cuenta, pero resultó que tengo dudas sobre el resultado que obtengo ...
Necesito producir un gran total usando el comando df en un sistema de archivos específico en dos servidores diferentes.
ssh server1 df -mP | egrep "/dev/md10|/dev/md11" | sort ; ssh server1 df -mP --total | grep "total" | egrep -v "/dev/md10|/dev/md11
El resultado:
/dev/md10 183004016 87303581 95700436 48% /si001c1
/dev/md11 183004016 165986430 17017587 91% /si001c2
total 366565396 253332843 113232554 70%
Y luego usé el mismo comando en el segundo servidor para obtener el gran total. Mi pregunta, el gran total que obtengo parece no estar bien (no estoy seguro) y cómo producir un gran total combinando ambos usando el mismo comando de todos modos usando un comando de línea única o como un script básico en bash. Gracias por la ayuda.
Actualización: Esta es una actualización después de seguir la guía de @EdmCoff.
printf "Grand total: " ; (ssh server1 df -m /dev/md11 ; ssh server2 df -m /dev/md1*) | awk 'a+=$2;b+=$3;c+=$4;d+=$5/3} END {print a" "b" "c" "d%}'
Resultado:
Grand total: 549012050 501832399 47179652 92%
Construyó un script (re-hecho):
#!/bin/bash
(ssh server1 df -m --no-sync "/dev/md11" ; ssh server2 df -m --no-sync "/dev/md1*") | sed -e /^Filesystem/d | sort > df_udsall
#(cat df_udsall)
printf "\nUDS:\nserver1 & server2\n"
printf "Mounted on Free space Disk usage Use"%%" Disk state"
while read df_udsall
do
USAGE=$(echo $df_udsall ; echo $grand_total) | awk '{print $5}' | cut -d"%" -f1
if [[ "$USAGE" -ge " 95" ]]
then
STATUS='CRITICAL'
elif [[ "$USAGE" -ge " 90" ]]
then
STATUS='WARNING'
else
STATUS='OK'
fi
printf "$(echo $df_udsall | awk '{print $6, $4, $3, $5}' > df_udsall_stats)"
column -t df_udsall_stats | perl -ne 'chomp ; printf "\n%-18s %8s %12s %6s %-2s", split / +/' ; printf "`echo -ne $STATUS`"
done < df_udsall
printf "\n\nGrand total " ; cat df_udsall | awk '{b+=$4;c+=$3;d+=$5/3} END {print b" "c" "d "%"}' > grand_total
column -t grand_total | perl -ne 'chomp ; printf "%15s %12s %6s %-2s", split / +/' ; printf "`echo -ne $STATUS`"
rm -f df_udsall df_udsall_stats grand_total
La secuencia de comandos anterior necesita algunos ajustes.
Resultado Esperado:
UDS:
server1 & server2
Mounted on Free space Disk usage Use% Disk state
/sic1 16202762 166801255 92% WARNING
/sic2 15648157 167355860 92% WARNING
/sic3 15256569 167747448 92% WARNING
Grand total: 47107488 501904563 92% OK
Se corrigió el resultado de salida del script tripleee:
UDS:
server1 & server2
Mounted on Free space Disk usage Use% Disk state
/sic001c1 92146461 90857556 50% OK
/sic001c2 16873531 166130486 91% WARNING
/sic001c3 16832710 166171307 91% WARNING
/sic001c4 16362388 166641629 92% WARNING
Grand total: 142215090 589800978 81 OK%