diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..32814ee --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +conf diff --git a/auto_config.sh b/auto_config.sh index e60c212..69d2719 100755 --- a/auto_config.sh +++ b/auto_config.sh @@ -33,31 +33,102 @@ ################################################################################ +# Current git directory +GIT_DIR="$(realpath ${0%/*})" + +# Conf file path +CONF_FILE="$GIT_DIR/conf" + +# Used if parameter id required - Do not edit +RELOAD_PARAMATER=false + +################################################################################ + +# Function to request parameters +function func_read_param() { + # $1 => PARAM => Parameter name + PARAM="$1" + # after shitf, $@ => Detail of selected param + shift + DETAIL="$@" + # Display and read reponse + read -p "${DETAIL}: " VALUE + # Delete line if exist, and write in conf file + sed -i "/$PARAM/d" $CONF_FILE + # Write param name and value in conf file + echo "${PARAM}='$VALUE'" >> $CONF_FILE + # Set to true to reload this script + RELOAD_PARAMATER=true +} + +# List names of parameter variables and description of parameter +LIST_PARAM=" +UNATTENDED_EMAIL Unattended email alert +GIT_USERNAME Git username +GIT_EMAIL Git email +" + +IFS=$'\n' + +# Test if conf file exist +if [ -f $CONF_FILE ] ;then + # If conf file exist, load it and test if each variable is defined + . $CONF_FILE + for DETAIL_PARAM in $LIST_PARAM ;do + PARAM=${DETAIL_PARAM%% *} # Delete all after first space + DETAIL=${DETAIL_PARAM#* } # Delete all before first space + # If variable is not defined, or if variable is empty, do request it + if [ -z ${!PARAM} ] ;then + func_read_param $PARAM $DETAIL + fi + done +else + # Conf file does not exist + touch $CONF_FILE # Create empty conf file + # For all variable, do request it + for DETAIL_PARAM in $LIST_PARAM ;do + PARAM=${DETAIL_PARAM%% *} # Delete all after first space + DETAIL=${DETAIL_PARAM#* } # Delete all before first space + func_read_param $PARAM $DETAIL + done +fi + +# If reload is required +if $RELOAD_PARAMATER ; then + $0 # Restart this script + exit 0 +fi + +################################################################################ + # Install the packages -apt-get -y install -y git tig bash-completion unattended-upgrades apt-listchanges logrotate +apt-get -y install \ + git \ + tig \ + bash-completion \ + unattended-upgrades \ + apt-listchanges \ + logrotate # Configure auto updates sed -i \ - -e 's#^//Unattended-Upgrade::Mail .*#Unattended-Upgrade::Mail "unattended@zordhak.fr";#' \ + -e "s#^//Unattended-Upgrade::Mail .*#Unattended-Upgrade::Mail '$UNATTENDED_EMAIL';#" \ -e 's#^//Unattended-Upgrade::MailOnlyOnError .*#Unattended-Upgrade::MailOnlyOnError "true";#' \ /etc/apt/apt.conf.d/50unattended-upgrades -# Git global username and email -read -p "Git username: " GIT_USERNAME -read -p "Git email: " GIT_EMAIL - +# Set git global config git config --global user.name "$GIT_USERNAME" git config --global user.email "$GIT_EMAIL" ## Symbolic links # Bashrc -ln -sf /srv/git/basic_config_debian/root/.bashrc /root/ +ln -sf $GIT_DIR/root/.bashrc /root/ # Profile -ln -sf /srv/git/basic_config_debian/root/.profile /root/ +ln -sf $GIT_DIR/root/.profile /root/ mkdir -p /root/.profile.d -ln -sf /srv/git/basic_config_debian/root/.profile.d/00_connexion_info.conf /root/.profile.d/ +ln -sf $GIT_DIR/root/.profile.d/00_connexion_info.conf /root/.profile.d/ # vimrc -ln -sf /srv/git/basic_config_debian/root/.vimrc /root/ +ln -sf $GIT_DIR/root/.vimrc /root/ ## Tune logrotate # Fix logrotate bug