I would make a frufru + or - so, sorry if you have any mistakes, but I made the race here.
But from what I understand, you can take advantage of the idea
#!/bin/bash
# Nome do script
name="meu_script"
# Diretório de log do mesmo
log_dir="/var/log/$name"
# Arquivo de log
log_file="/$log_dir/$name.log"
# Arquivo de log das instalações
log_install="/$log_dir/$name.apt"
# Pacotes que seram instalados
pkg_install="nginx mysql-server php-fpm php-mysql php-curl php-json php-mcrypt php-mbstring php-xml php-imagick git unzip"
# Nível de log 0="não gera log" 1="gera aquivo de log" 2="gera arquivo de log e saida no terminal" 3="debug"
registra=0
# Cria diretório de log caso não exista
if [[ ! -d $log_dir ]]; then
mkdir $log_dir
fi
# Debug
if [[ $registra -eq 3 ]]; then
set -x
fi
# Função de log
Log_apt() {
if [[ $registra -eq 1 ]]; then
echo -e "'date "+%h %d %H:%M:%S"' $HOSTNAME $name $1" >> $log_install
elif [[ $registra -eq 2 ]]; then
echo -e "'date "+%h %d %H:%M:%S"' $HOSTNAME $name $1" >> $log_install
echo -e "'date "+%h %d %H:%M:%S"' $HOSTNAME $name $1"
fi
}
Log() {
if [[ $registra -eq 1 ]]; then
echo -e "'date "+%h %d %H:%M:%S"' $HOSTNAME $name $1" >> $log_install
elif [[ $registra -eq 2 ]]; then
echo -e "'date "+%h %d %H:%M:%S"' $HOSTNAME $name $1" >> $log_install
echo -e "'date "+%h %d %H:%M:%S"' $HOSTNAME $name $1"
fi
}
# Cores
# Verde
c1() {
echo -e "\e[32;1m$1\e[m"
}
# Vermelho
c2() {
echo -e "\e[31;1m$1\e[m"
}
# Amarelo
c3() {
echo -e "\e[33;1m$1\e[m"
}
# Azul claro
c4() {
echo -e "\e[36;1m$1\e[m"
}
# Linha em branco
l1() {
echo -e " " >> $LogFile
}
# Loga
Log "'c3 "praparando o servidor web..."'"
Log "'c3 "Configurando idioma pt_BR"'"
# Função que será executada
cmd=$(localedef -c -i pt_BR -f UTF-8 pt_BR.UTF-8 2>&1)
# Caso a função acima de algum erro, registra o erro que ocorreu no arquivo de log
# sem erro registra sucesso
if [[ $? -ne 0 ]]; then
Log "'c2 "error"' $cmd"
else
Log "'c1 "sucesso"'"
fi
export LANG=pt_BR.UTF-8
# Loga
Log "'c3 "Alterando timezone para America/Sao_Paulo"'"
# Função que será executada
cmd=$(timedatectl set-timezone America/Sao_Paulo)
# Caso a função acima de algum erro, registra o erro que ocorreu no arquivo de log
# sem erro registra sucesso
if [[ $? -ne 0 ]]; then
Log "'c2 "error"' $cmd"
else
Log "'c1 "sucesso"'"
fi
# Esse for irá instalar todos os pacotes definido na variável $pkg_install
for i in $pkg_install; do
# Registra no arquivo de log de instalação
Log_apt "'c3 "apt-get install"' 'c4 "$i"'"
# Loga
Log "'c3 "apt-get install"' 'c4 "$i"'"
# Instala o pacote $i
apt-get install -y $i >> $log_install 2>&1
# Loga se a instalação foi bem ou mal sucedida
if [[ $? -ne 0 ]]; then
Log "'c1 "apt-get install"' sucesso ao instalar 'c1 "$i"'"
else
Log "'c2 "apt-get install"' falha ao instalar 'c2 "$i"'"
fi
done
# Loga
Log "'c3 "chown"' definindo www-data como owner do diretório /var/www"
# Função que será executada
cmd=$(chown -R www-data:www-data /var/www 2>&1)
# Caso a função acima de algum erro, registra o erro que ocorreu no arquivo de log
# sem erro registra sucesso
if [[ $? -ne 0 ]]; then
Log "'c2 "error"' $cmd"
else
Log "'c1 "sucesso"'"
fi
# Loga
Log "'c3 "reiniciando NGINX"'"
# Função que será executada
cmd=$(service nginx restart 2>&1)
# Caso a função acima de algum erro, registra o erro que ocorreu no arquivo de log
# sem erro registra sucesso
if [[ $? -ne 0 ]]; then
Log "'c2 "error"' $cmd"
else
Log "'c1 "sucesso"'"
fi
# Loga
Log "'c3 "reiniciando PHP-FPM"'"
# Função que será executada
cmd=$(service php7.0-fpm restart 2>&1)
# Caso a função acima de algum erro, registra o erro que ocorreu no arquivo de log
# sem erro registra sucesso
if [[ $? -ne 0 ]]; then
Log "'c2 "error"' $cmd"
else
Log "'c1 "sucesso"'"
fi
# Loga
Log "'c3 "reiniciando PHP-FPM"'"
# Caso a função acima de algum erro, registra o erro que ocorreu no arquivo de log
# sem erro registra sucesso
cmd=$(service php7.0-fpm restart 2>&1)
if [[ $? -ne 0 ]]; then
Log "'c2 "error"' $cmd"
else
Log "'c1 "sucesso"'"
fi
# Loga
Log "'c3 "Ajustando configurações essenciais do MySQL"'"
# Espera
sleep 3
SENHA=1QAZxsw2 && echo -e "\n\n$SENHA\n$SENHA\n\nn\n\n" | mysql_secure_installation