#!/bin/bash # Recipe script for a Gentoo system to check basic configuration # Define colors RED='\033[1;31m' BLUE='\033[1;34m' GREEN='\033[1;32m' NC='\033[0m' # No Color # Packages to check PACKAGES=( # 'virtual/ssh' # 'app-admin/rsyslog' # 'net-misc/ntp' # 'net-analyzer/icinga2' # 'app-backup/borgbackup' # 'virtual/cron' # 'sys-process/cronie' # 'net-analyzer/munin' # 'app-admin/sysklogd' # 'dev-vcs/git' # 'net-analyzer/nrpe' # 'net-analyzer/net-snmp' # 'net-dns/bind-tools' # 'dev-vcs/git' # 'mail-mta/postfix' # 'mail-mta/eeeepostfix' ) # Package to check if it's a physical machine PACKAGES_PHYSICAL=( 'sys-apps/smartmontools' ) # Print packages not installed or with error at end script PACKAGES_TO_CHECK="" NAMES_TO_RESOLV_AND_PING=( 'grifon.fr' 'arn-fai.net' 'grifonfesfdsfdsf.fr' ) RESOLVERS=( '2a00:5884::7' '89.234.186.4' ) RESOLV_FAILED="" RESOLVER_NOT_IN_ETC_RESOLVCONF="" IP_NOT_RECORDED_IN_DNS="" PING_FAILED="" SERVICES_TO_CHECK=( 'rsyslog' 'ntpd' 'munin-node' 'iptables' 'ip6tables' 'sshd' 'postfix' 'nrpe' 'snmpd' 'hostname' ) SERVICES_TO_CHECK_PHYSICAL=( 'smard' ) # Get ALL locales IPs except loopback LOCALES_IP_WITHOUT_LOOPBACK=$(ip a |grep inet |grep -v 'fe80\|127.0.0.1\|::1/128'| tr -s " " |cut -f3 -d' '| cut -d\/ -f1) IPV4_ADMIN_NETWORK="172.18.0." IPV6_ADMIN_NETWORK="fd01:1e02:40:" IPV4_MASTER_MUNIN='^172\\\.18\\\.0\\\.13\$' IPV6_MASTER_MUNIN='^fd01:1e02:40::3\$' IPV4_MASTER_MUNIN_PRINT='^172\.18\.0\.13$' IPV6_MASTER_MUNIN_PRINT='^fd01:1e02:40::3$' BOOL_ADMIN_IPV4_NOT_CONFIGURED=0 BOOL_ADMIN_IPV6_NOT_CONFIGURED=0 # Print services not started or with error at end script SERVICES_NOT_STARTED_OR_ERROR="" # Print message at end script if hostname *.grif or *.grifon.fr not configured BOOL_CHECK_HOSTNAME=0 SSH_CONFIG_CHECK_FAILED="" NRPE_CONFIG_CHECK_FAILED="" MUNIN_CONFIG_CHECK_FAILED="" MAIL_ALIAS_CONFIG_CHECK_FAILED="" MAIL_ALIAS_ROOT="admin@grifon.fr" usage() { printf "Usage: ./recipe_gentoo.sh [--physical]\n" printf "option : \t-P, --physical : if the current server is not a VM but a physical machine\n" printf "option : \t-h, --help print this current message\n" } # Check parameters if [ $1 ]; then if [ $# -gt 1 ]; then echo "ERROR : to much parameters (one MAX)" usage exit 0 # Print help elif [ $1 = '-h' ] || [ $1 = '--help' ]; then usage exit 0 # Set boolean physical elif [ $1 = '-P' ] || [ $1 = '--physical' ];then PACKAGES+=(${PACKAGES_PHYSICAL[@]}) SERVICES_TO_CHECK+=(${SERVICES_TO_CHECK_PHYSICAL[@]}) # If unknown parameter else echo "ERROR : unknown parameter" usage exit 0 fi fi echo "-------------------------------------------------" echo -e "------- ${BLUE}RECIPE GENTOO - CHECK BASIC CONFIG${NC} ------" echo -e "-------------------------------------------------\n" . recipes/recipe_check_packages.sh . recipes/recipe_check_hostname.sh . recipes/recipe_check_dns_config.sh . recipes/recipe_check_ping.sh . recipes/recipe_check_ip_admin.sh . recipes/recipe_check_services.sh . recipes/recipe_check_ssh_config.sh . recipes/recipe_check_nrpe_config.sh . recipes/recipe_check_munin_config.sh . recipes/recipe_check_mail_alias_config.sh . recipes/recipe_final_summary.sh exit 0