You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
3.9 KiB
146 lines
3.9 KiB
#!/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
|
|
|