#!/bin/bash # Recipe script for a Gentoo system to check basic configuration # Define colors to print messages export RED='\033[1;31m' export BLUE='\033[1;34m' export GREEN='\033[1;32m' export NC='\033[0m' # No Color # Be sure only root can run the script if [ "$(id -u)" != "0" ]; then echo -e "${RED}ERROR : This script must be run as root${NC}" 1>&2 exit 1 fi # Load variables VARS_FILE='./vars.sh' if [ -f ${VARS_FILE} ]; then source ${VARS_FILE} else echo -e "${RED}ERROR : vars file ${VARS_FILE} not found${NC}" 1>&2 exit 1 fi # Check requirements REQUIREMENTS="CURL GREP ECHO EMERGE NSLOOKUP IP HOSTNAME AWK SED CUT TR PING JQ" for requirement in $REQUIREMENTS do # Check if requirement tool exit on the system which $(eval echo "\$${requirement}") &>/dev/null # Return Code RC=$? if [ ${RC} -ne 0 ] then echo -e "${RED}ERROR : ${requirement} ($(eval echo "\$${requirement}")) is required to use this script. Requirements are : ${REQUIREMENTS}${NC}" exit 1 fi done # Variables used to print the summary messages at the and of the script export PACKAGES_TO_CHECK="" export RESOLV_FAILED="" export HOSTNAME_A_RECORD_NOT_IN_DNS=0 export HOSTNAME_AAAA_RECORD_NOT_IN_DNS=0 export RESOLVER_NOT_IN_ETC_RESOLVCONF="" export IP_NOT_RECORDED_IN_DNS="" export PING_FAILED="" export SSH_CONFIG_CHECK_FAILED="" export NRPE_CONFIG_CHECK_FAILED="" export MUNIN_CONFIG_CHECK_FAILED="" export MAIL_ALIAS_CONFIG_CHECK_FAILED="" export SNMP_CONFIG_CHECK_FAILED="" export POSTFIX_CONFIG_CHECK_FAILED="" export AUTOBACKUP_CONFIG_CHECK_FAILED="" export AUTOUPDATE_CONFIG_CHECK_FAILED="" export IPAM_CONFIG_CHECK_FAILED="" export PORTAGE_CONFIG_CHECK_FAILED="" export SERVICES_NOT_STARTED_OR_ERROR="" export BOOL_CHECK_HOSTNAME=0 # Print message at end script if hostname *.grif or *.grifon.fr not configured export BOOL_ADMIN_IPV4_NOT_CONFIGURED=0 export BOOL_ADMIN_IPV6_NOT_CONFIGURED=0 export WRONG_GENTOO_PROFILE_SELECTED=0 # Get ALL locales IPs except loopback export LOCALES_IP_WITHOUT_LOOPBACK=$(ip addr show scope global | awk '/inet/ { sub(/\/.*$/, "", $2); print $2 }' | sort | uniq) export IPV6_ADMIN_LAN_IP=$(echo ${LOCALES_IP_WITHOUT_LOOPBACK} | tr " " "\n" | grep ^${IPV6_ADMIN_NETWORK}) export IPV4_ADMIN_LAN_IP=$(echo ${LOCALES_IP_WITHOUT_LOOPBACK} | tr " " "\n" | grep ^${IPV4_ADMIN_NETWORK}) # Help message 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 -e "${RED}ERROR : to much parameters (one MAX)${NC}" 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 -e "${RED}ERROR : unknown parameter${NC}" usage exit 0 fi fi # Load common functions . recipes/common_functions.sh print_config_title 'RECIPE GENTOO - CHECK BASIC CONFIG' # Voir pour mettre ./ à la place de . #. 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_snmp_config.sh #. recipes/recipe_check_mail_alias_config.sh #. recipes/recipe_check_postfix_protocol_config.sh #. recipes/recipe_check_ipam_config.sh #. recipes/recipe_check_eselect.sh #. recipes/recipe_check_autobackup_config.sh . recipes/recipe_check_autoupdate_config.sh #. recipes/recipe_check_portage.sh . recipes/recipe_final_summary.sh #. recipes/recipe_addtional_manual_verification.sh exit 0