327 lines
10 KiB
Bash
327 lines
10 KiB
Bash
#!/bin/bash
|
|
_green(){ /bin/echo -e "\033[0;32m$@\033[0m"; }
|
|
_green_n(){ /bin/echo -ne "\033[0;32m$@\033[0m"; }
|
|
|
|
_yellow(){ /bin/echo -e "\033[0;33m$@\033[0m"; }
|
|
_yellow_n(){ /bin/echo -ne "\033[0;33m$@\033[0m"; }
|
|
|
|
_cyan(){ /bin/echo -e "\033[0;36m$@\033[0m"; }
|
|
_lighcyan_n(){ /bin/echo -ne "\x1B[96m$@\033[0m"; }
|
|
|
|
_red(){ /bin/echo -e "\033[0;31m$@\033[0m"; }
|
|
_red_n(){ /bin/echo -ne "\033[0;31m$@\033[0m"; }
|
|
|
|
_blue(){ /bin/echo -e "\033[0;34m$@\033[0m"; }
|
|
_blue_n(){ /bin/echo -ne "\033[0;34m$@\033[0m"; }
|
|
|
|
_gray(){ /bin/echo -e "\033[0;90m$@\033[0m"; }
|
|
_gray_n(){ /bin/echo -ne "\033[0;90m$@\033[0m"; }
|
|
|
|
_lighpink(){ /bin/echo -e "\x1B[95m$@\033[0m"; }
|
|
_lighpink_n(){ /bin/echo -ne "\x1B[95m$@\033[0m"; }
|
|
|
|
_lighwhite(){ /bin/echo -e "\x1B[97m$@\033[0m"; }
|
|
_lighwhite_n(){ /bin/echo -ne "\x1B[97m$@\033[0m"; }
|
|
|
|
_success(){ /bin/echo -en "\x1B[97m[\033[1;32m OK \033[0m\x1B[97m]\033[0m "; /bin/echo -e "$1"; }
|
|
_failure(){ /bin/echo -en "\033[41m\e[5m\033[1;38m FAILED \033[0m "; /bin/echo -e "$1"; }
|
|
_fail() { /bin/echo -en "\033[41m\e[5m "; /bin/echo -e "\033[1;38m$1 \033[0m"; }
|
|
|
|
_abort(){ echo; _red "ABORTED"; echo; _yellow "$1"; echo; exit "$2"; }
|
|
|
|
##
|
|
|
|
## funçòes do Script
|
|
|
|
_apt() {
|
|
_cyan "Ajustando o APT e configurando os repositórios..."
|
|
|
|
# Criando backup do sources.list antes de qualquer modificação
|
|
if [ -f /etc/apt/sources.list ]; then
|
|
_yellow "Criando backup do arquivo sources.list..."
|
|
cp /etc/apt/sources.list /etc/apt/sources.list_backup || _failure "Erro ao criar backup de sources.list" 1
|
|
_success "Backup do arquivo sources.list criado com sucesso."
|
|
else
|
|
_red "Não foi possível realizar o backup do arquivo /etc/apt/sources.list."
|
|
return 1
|
|
fi
|
|
|
|
# Detectando a versão do Debian
|
|
if [ -f /etc/os-release ]; then
|
|
version=$(grep "VERSION_CODENAME=" /etc/os-release | cut -d '=' -f 2)
|
|
elif [ -f /etc/debian_version ]; then
|
|
version_number=$(cat /etc/debian_version | cut -d '.' -f 1)
|
|
case "$version_number" in
|
|
12) version="bookworm" ;;
|
|
11) version="bullseye" ;;
|
|
10) version="buster" ;;
|
|
9) version="stretch" ;;
|
|
8) version="jessie" ;;
|
|
*) _failure "Versão do Debian não suportada." 1 ;;
|
|
esac
|
|
else
|
|
_failure "Erro ao detectar a versão do sistema. Não foi possível identificar o Debian." 1
|
|
return 1
|
|
fi
|
|
|
|
if [ -z "$version" ]; then
|
|
_failure "Erro ao detectar a versão do Debian. Nenhuma alteração foi feita no arquivo sources.list." 1
|
|
return 1
|
|
else
|
|
_success "Versão do Debian detectada: $version"
|
|
fi
|
|
|
|
# Limpando e recriando o arquivo sources.list
|
|
> /etc/apt/sources.list # Limpa o arquivo
|
|
cat << EOF > /etc/apt/sources.list
|
|
deb http://deb.debian.org/debian/ $version main non-free-firmware contrib non-free
|
|
deb-src http://deb.debian.org/debian/ $version main non-free-firmware contrib non-free
|
|
|
|
deb http://security.debian.org/debian-security $version-security main non-free-firmware contrib non-free
|
|
deb-src http://security.debian.org/debian-security $version-security main non-free-firmware contrib non-free
|
|
|
|
deb http://deb.debian.org/debian/ $version-updates main non-free-firmware contrib non-free
|
|
deb-src http://deb.debian.org/debian/ $version-updates main non-free-firmware contrib non-free
|
|
|
|
deb http://deb.debian.org/debian $version-backports main contrib non-free
|
|
EOF
|
|
_success "sources.list atualizado para a versão $version do Debian."
|
|
|
|
# Atualizando repositórios e exibindo a saída do comando apt update
|
|
_green "\nAtualizando repositórios..."
|
|
apt update && apt full-upgrade -y
|
|
}
|
|
|
|
##
|
|
|
|
_util() {
|
|
_cyan "Instalando pacotes básicos..."
|
|
|
|
# Lista de pacotes
|
|
packages=(
|
|
firmware-linux
|
|
firmware-linux-free
|
|
firmware-linux-nonfree
|
|
bash-completion
|
|
net-tools
|
|
nftables
|
|
traceroute
|
|
tcptraceroute
|
|
htop
|
|
iotop
|
|
curl
|
|
wget
|
|
iptraf-ng
|
|
apt-transport-https
|
|
rsyslog
|
|
mtr-tiny
|
|
sudo
|
|
whois
|
|
ethtool
|
|
)
|
|
|
|
# Array para armazenar pacotes que falharam
|
|
pacotes_falhados=()
|
|
# Verificar e instalar pacotes
|
|
for pkg in "${packages[@]}"; do
|
|
if dpkg -l | grep -qw "$pkg"; then
|
|
_yellow "\nO pacote $pkg já está instalado."
|
|
else
|
|
_cyan "\nInstalando o pacote $pkg..."
|
|
if apt install -y "$pkg"; then
|
|
echo -e ""
|
|
_success "Pacote $pkg instalado com sucesso."
|
|
else
|
|
_red "Falha ao instalar o pacote $pkg. Ignorando este pacote."
|
|
pacotes_falhados+=("$pkg") # Adiciona o pacote falhado ao array
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# Verificar se houve falhas
|
|
if [ ${#pacotes_falhados[@]} -eq 0 ]; then
|
|
echo
|
|
_success "Todos os pacotes foram instalados com sucesso.\n"
|
|
return 0 # Retorna sucesso
|
|
else
|
|
_red "\nA instalação dos seguintes pacotes falharam:"
|
|
for failed_pkg in "${pacotes_falhados[@]}"; do
|
|
_red "- $failed_pkg"
|
|
done
|
|
echo
|
|
return 1 # Retorna 1, mas não sai do script
|
|
fi
|
|
}
|
|
|
|
##
|
|
|
|
_bashrc() {
|
|
_cyan "\nBaixando script de personalização do bash..."
|
|
|
|
bash_script="https://git.ipv0.com.br/0/linux/raw/branch/master/mod/mod_bashrc"
|
|
|
|
if curl -fsSL "$bash_script" | bash; then
|
|
echo
|
|
_success "Script de personalização do bash executado com sucesso."
|
|
echo
|
|
else
|
|
_red "\nFalha ao baixar ou executar o script bashrc.\n"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
##
|
|
|
|
_motd() {
|
|
_cyan "\nBaixando script de personalização do motd..."
|
|
|
|
motd_script="https://git.ipv0.com.br/0/linux/raw/branch/master/mod/mod_motd"
|
|
|
|
if curl -fsSL "$motd_script" | bash; then
|
|
echo
|
|
_success "Script de personalização do motd executado com sucesso."
|
|
echo
|
|
else
|
|
_red "\nFalha ao baixar ou executar o script motd.\n"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
_teccnia() {
|
|
## Variáveis
|
|
REPO_URL="https://git.ipv0.com.br/teccnia/servers.git"
|
|
CLONE_DIR="/opt/teccnia/tools"
|
|
BIN_DIR="/usr/bin"
|
|
|
|
## Clonar o repositório sem criar a pasta 'Servers'
|
|
if [ -d "$CLONE_DIR/.git" ]; then
|
|
_cyan "\nO sistema já possui as ferramentas TECCNIA. Atualizando..."
|
|
git -C "$CLONE_DIR" pull
|
|
else
|
|
_cyan "\nObtendo ferramentas TECCNIA..."
|
|
git clone "$REPO_URL" "$CLONE_DIR"
|
|
fi
|
|
|
|
## Verificar se o clone foi bem-sucedido
|
|
if [ $? -ne 0 ]; then
|
|
_red "\nFalha ao clonar o repositório.\n"
|
|
return 1
|
|
fi
|
|
|
|
## Lista de arquivos/diretórios a serem removidos
|
|
remover_itens=(
|
|
"*.md"
|
|
"*.txt"
|
|
"server.sh"
|
|
)
|
|
|
|
## Remover arquivos ou diretórios indesejados
|
|
for item in "${remover_itens[@]}"; do
|
|
if [[ $item == *\** ]]; then
|
|
rm -rf "$CLONE_DIR"/$item
|
|
else
|
|
rm -rf "$CLONE_DIR/$item"
|
|
fi
|
|
done
|
|
|
|
## Dar permissão de execução a todos os arquivos restantes
|
|
_cyan "\nAjustando permissões de execução..."
|
|
find "$CLONE_DIR" -type f -exec chmod +x {} \;
|
|
|
|
## Criar links simbólicos para todos os arquivos no /usr/bin/
|
|
_cyan "\nCriando links simbólicos para os scripts..."
|
|
for script in "$CLONE_DIR"/*; do
|
|
script_name=$(basename "$script")
|
|
ln -sf "$CLONE_DIR/$script_name" "$BIN_DIR/$script_name"
|
|
done
|
|
|
|
echo
|
|
_success "Ferramentas TECCNIA instaladas!"
|
|
echo
|
|
|
|
}
|
|
|
|
##
|
|
|
|
# Exibir mensagem inicial
|
|
_blue "\n + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + "
|
|
_blue " | |"
|
|
_blue " | Tweaks pós instalação servidor Debian |"
|
|
_blue " | |"
|
|
_blue " + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +\n"
|
|
|
|
echo -e "\n Para mais informações, visite o link do projeto:"
|
|
echo -e " https://git.ipv0.com.br/0/linux"
|
|
|
|
# Confirmar execução do script
|
|
read -p " Você deseja prosseguir? (S/n): " response < /dev/tty
|
|
if [[ "$response" =~ ^([Nn][Oo]?|)$ ]]; then
|
|
_red "\n Operação cancelada pelo usuário!\n"
|
|
exit 0
|
|
fi
|
|
|
|
## Verifica se o usuário é root
|
|
if [ "$EUID" -ne 0 ]; then
|
|
_red "\n Você deve ser root para executar este script!\n"
|
|
exit 1
|
|
fi
|
|
|
|
# Verificação do sistema operacional
|
|
if [ -f /etc/os-release ]; then
|
|
distro=$(grep ^ID= /etc/os-release | cut -d '=' -f 2 | tr -d '"') # Obtém o nome da distribuição (debian, ubuntu, etc.)
|
|
else
|
|
_red "\n Não foi possível determinar a distribuição. O arquivo /etc/os-release não existe.\n"
|
|
exit 1
|
|
fi
|
|
|
|
case "$distro" in
|
|
debian)
|
|
# Se for Debian, segue sem exibir mensagens
|
|
;;
|
|
ubuntu)
|
|
_yellow "\n ATENÇÃO!!!"
|
|
_yellow " Distribuição Ubuntu detectada. Este script foi feito para distribuições"
|
|
_yellow " Debian. Erros poderão ocorrer durante a execução do script.\n"
|
|
read -p "Deseja continuar mesmo assim? (s/N): " choice
|
|
case "$choice" in
|
|
[Ss]*)
|
|
_yellow "\nContinuando com a execução...\n"
|
|
;;
|
|
*)
|
|
_red "\nScript encerrado pelo usuário.\n"
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
_red "\n A distribuição $distro não é compatível com este script.\n"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Executa funções
|
|
|
|
_apt
|
|
|
|
# Controle de fluxo função _util
|
|
# Se houver falha na instalação dos pacotes, encerra o script
|
|
if ! _util; then
|
|
_red "Falhas ocorreram na instalação dos pacotes. Verifique as mensagens acima."
|
|
exit 1 # Encerra o script aqui, se necessário
|
|
fi
|
|
|
|
_bashrc
|
|
_motd
|
|
_teccnia
|
|
|
|
# fim!
|
|
|
|
_green "\n Todos os ajustes foram realizados!"
|
|
echo -e "\n Reinicie o sistema para aplicar todas as alterações realizadas."
|
|
read -p " Deseja reiniciar agora? (S/n): " response < /dev/tty
|
|
if [[ "$response" =~ ^([Ss][Ii]?)$ ]]; then
|
|
_cyan "\n Reiniciando o sistema..."
|
|
sudo reboot
|
|
else
|
|
echo -e ""
|
|
fi |