2
0

40-services 883 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/bin/bash
  2. # set column width
  3. COLUMNS=3
  4. # colors
  5. green="\e[1;32m"
  6. red="\e[1;31m"
  7. undim="\e[0m"
  8. services=("fail2ban" "ufw" "lxd" "netdata" "zed" "smartd" "postfix")
  9. # sort services
  10. IFS=$'\n' services=($(sort <<<"${services[*]}"))
  11. unset IFS
  12. service_status=()
  13. # get status of all services
  14. for service in "${services[@]}"; do
  15. service_status+=($(systemctl is-active "$service"))
  16. done
  17. out=""
  18. for i in ${!services[@]}; do
  19. # color green if service is active, else red
  20. if [[ "${service_status[$i]}" == "active" ]]; then
  21. out+="${services[$i]}:,${green}${service_status[$i]}${undim},"
  22. else
  23. out+="${services[$i]}:,${red}${service_status[$i]}${undim},"
  24. fi
  25. # insert \n every $COLUMNS column
  26. if [ $((($i+1) % $COLUMNS)) -eq 0 ]; then
  27. out+="\n"
  28. fi
  29. done
  30. out+="\n"
  31. printf "\nservices:\n"
  32. printf "$out" | column -ts $',' | sed -e 's/^/ /'