2
0

30-zpool-bar 1002 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #!/bin/bash
  2. # config
  3. max_usage=90
  4. bar_width=50
  5. clear="\e[39m\e[0m"
  6. dim="\e[2m"
  7. zpools=($(zpool list -Ho name | awk '{print $0}'))
  8. printf "\nzpool usage:\n"
  9. for zpool in "${zpools[@]}"
  10. do
  11. # get zpool usage
  12. line=$(zpool list -Ho name,cap,size "${zpool}")
  13. usage=$(echo "$line" | awk '{print $2}' | sed 's/%//')
  14. used_width=$((($usage*$bar_width)/100))
  15. # color is green if usage < max_usage, else red
  16. if [ "${usage}" -ge "${max_usage}" ]; then
  17. color="\e[31m"
  18. else
  19. color="\e[32m"
  20. fi
  21. # print green/red bar until used_width
  22. bar="${color}"
  23. for sep in $(seq 1 $used_width); do
  24. bar+="="
  25. done
  26. # print dimmmed bar until end
  27. bar+="${clear}${dim}"
  28. for sep in $(seq 1 $(($bar_width-$used_width))); do
  29. bar+="="
  30. done
  31. bar="[${bar}${clear}]"
  32. # print usage line & bar
  33. echo "${line}" | awk '{ printf("%-10s%+3s used out of %+5s\n", $1, $2, $3); }' | sed -e 's/^/ /'
  34. echo -e "${bar}" | sed -e 's/^/ /'
  35. done