5
5
# Facebook: facebook.com/BoraParaPratica
6
6
# YouTube: youtube.com/BoraParaPratica
7
7
# Data de criação: 31/05/2016
8
- # Data de atualização: 06/10/2018
9
- # Versão: 0.9
8
+ # Data de atualização: 23/07/2020
9
+ # Versão: 0.10
10
10
# Testado e homologado para a versão do Ubuntu Server 16.04 LTS x64
11
11
# Kernel >= 4.4.x
12
12
#
21
21
#
22
22
# Utilizar o comando: sudo -i para executar o script
23
23
#
24
- # Caminho para o Log do Script-00.sh
25
- LOG=" /var/log/script-00.log"
24
+ # Variável do caminho do Log dos Script utilizado nesse curso (VARIÁVEL MELHORADA)
25
+ # opções do comando cut: -d (delimiter), -f (fields)
26
+ # $0 (variável de ambiente do nome do comando)
27
+ LOG=" /var/log/$( echo $0 | cut -d' /' -f2) "
26
28
#
27
- # Variável da Data Inicial para calcular tempo de execução do Script
28
- DATAINICIAL=` date +%s`
29
+ # Variável da Data Inicial para calcular o tempo de execução do script (VARIÁVEL MELHORADA)
30
+ # opção do comando date: +%T (Time)
31
+ HORAINICIAL=$( date +%T)
29
32
#
30
- # Validando o ambiente, verificando se o usuário e "root"
31
- USUARIO=` id -u`
32
- UBUNTU=` lsb_release -rs`
33
- KERNEL=` uname -r | cut -d' .' -f1,2`
33
+ # Variáveis para validar o ambiente, verificando se o usuário e "root", versão do ubuntu e kernel (VARIÁVEL MELHORADA)
34
+ # opções do comando id: -u (user)
35
+ # opções do comando: lsb_release: -r (release), -s (short),
36
+ # opões do comando uname: -r (kernel release)
37
+ # opções do comando cut: -d (delimiter), -f (fields)
38
+ # opção do shell script: piper | = Conecta a saída padrão com a entrada padrão de outro comando
39
+ # opção do shell script: acento crase ` ` = Executa comandos numa subshell, retornando o resultado
40
+ # opção do shell script: aspas simples ' ' = Protege uma string completamente (nenhum caractere é especial)
41
+ # opção do shell script: aspas duplas " " = Protege uma string, mas reconhece $, \ e ` como especiais
42
+ USUARIO=$( id -u)
43
+ UBUNTU=$( lsb_release -rs)
44
+ KERNEL=$( uname -r | cut -d' .' -f1,2)
45
+ #
46
+ # Verificando se o usuário é Root, Distribuição é >=16.04 e o Kernel é >=4.4 <IF MELHORADO)
47
+ # [ ] = teste de expressão, && = operador lógico AND, == comparação de string, exit 1 = A maioria dos erros comuns na execução
48
+ clear
49
+ if [ " $USUARIO " == " 0" ] && [ " $UBUNTU " == " 16.04" ] && [ " $KERNEL " == " 4.4" ]
50
+ then
51
+ echo -e " O usuário é Root $USUARIO , continuando com o script..."
52
+ echo -e " Distribuição é >= $UBUNTU , continuando com o script..."
53
+ echo -e " Kernel é >= $KERNEL , continuando com o script..."
54
+ sleep 5
55
+ clear
56
+ else
57
+ echo -e " Usuário não é Root ($USUARIO ) ou Distribuição não é >=16.04.x ($UBUNTU ) ou Kernel não é >=4.4 ($KERNEL )"
58
+ echo -e " Caso você não tenha executado o script com o comando: sudo -i"
59
+ echo -e " Execute novamente o script $0 para verificar o ambiente e continuar com a instalação"
60
+ exit 1
61
+ fi
62
+ #
63
+ # Script de atualização do GNU/Linux Ubuntu Server 16.04.x (SCRIPT MELHORADO, REMOÇÃO DA TABULAÇÃO)
64
+ # opção do comando echo: -e (enable interpretation of backslash escapes), \n (new line)
65
+ # opção do comando hostname: -I (all IP address)
66
+ # opção do comando date: + (format), %d (day), %m (month), %Y (year 1970), %H (hour 24), %M (minute 60)
67
+ # opção do comando: &>> (redireciona a saída padrão, anexando)
68
+ echo -e " Início do script $0 em: ` date +%d/%m/%Y-" (" %H:%M" )" ` \n" & >> $LOG
69
+ #
70
+ echo -e " Usuário é ` whoami` , continuando a executar o script $0 "
71
+ echo
72
+ echo -e " 01. Atualização das listas do Apt-Get"
73
+ echo -e " 02. Atualização dos Aplicativos Instalados"
74
+ echo -e " 03. Atualização da Distribuição Ubuntu Server (Kernel)"
75
+ echo -e " 04. Autoremoção dos Aplicativos do Apt-Get"
76
+ echo -e " 05. Limpando o repositório Local do Apt-Get (Cache)"
77
+ echo
78
+ echo -e " Após o término do script $0 o Servidor será reinicializado"
79
+ echo
80
+ echo ============================================================ >> $LOG
34
81
35
- if [ " $USUARIO " == " 0" ]
36
- then
37
- if [ " $UBUNTU " == " 16.04" ]
38
- then
39
- if [ " $KERNEL " == " 4.4" ]
40
- then
41
- clear
42
- echo -e " Usuário é ` whoami` , continuando a executar o Script-00.sh"
43
- echo
44
- echo -e " 01. Atualização das listas do Apt-Get"
45
- echo -e " 02. Atualização dos Aplicativos Instalados"
46
- echo -e " 03. Atualização da Distribuição Ubuntu Server (Kernel)"
47
- echo -e " 04. Autoremoção dos Aplicativos do Apt-Get"
48
- echo -e " 05. Limpando o repositório Local do Apt-Get (Cache)"
49
- echo
50
- echo -e " Após o término o Servidor será reinicializado"
51
- echo
52
- echo ============================================================ >> $LOG
53
-
54
- echo -e " Atualizando as Listas do Apt-Get (apt-get update), aguarde..."
55
- # Exportando a variável do Debian Frontend Noninteractive para não solicitar interação com o usuário
56
- export DEBIAN_FRONTEND=noninteractive
57
- # Atualizando as listas do apt-get
58
- apt-get update & >> $LOG
59
- echo -e " Listas Atualizadas com Sucesso!!!, continuando o script..."
60
- echo
61
- echo ============================================================ >> $LOG
82
+ echo -e " Atualizando as Listas do Apt-Get (apt-get update), aguarde..."
83
+ # Exportando a variável do Debian Frontend Noninteractive para não solicitar interação com o usuário
84
+ export DEBIAN_FRONTEND=noninteractive
85
+ # Atualizando as listas do apt-get
86
+ # opção do comando: &>> (redireciona a saída padrão, anexando)
87
+ apt-get update & >> $LOG
88
+ echo -e " Listas Atualizadas com Sucesso!!!, continuando o script..."
89
+ sleep 5
90
+ echo
91
+ echo ============================================================ >> $LOG
62
92
63
- echo -e " Atualização dos Aplicativos Instalados (apt-get upgrade), aguarde..."
64
- # Fazendo a atualização de todos os pacotes instalados no servidor
65
- apt-get -o Dpkg::Options::=" --force-confold" upgrade -q -y --force-yes & >> $LOG
66
- echo -e " Sistema Atualizado com Sucesso!!!, continuando o script..."
67
- echo
68
- echo ============================================================ >> $LOG
93
+ echo -e " Atualização dos Aplicativos Instalados (apt-get upgrade), aguarde..."
94
+ # Fazendo a atualização de todos os pacotes instalados no servidor
95
+ # opção do comando: &>> (redireciona a saída padrão, anexando)
96
+ # opção do comando apt-get: -o (option), -q (quiet), -y (yes)
97
+ apt-get -o Dpkg::Options::=" --force-confold" upgrade -q -y --force-yes & >> $LOG
98
+ echo -e " Sistema Atualizado com Sucesso!!!, continuando o script..."
99
+ sleep 5
100
+ echo
101
+ echo ============================================================ >> $LOG
69
102
70
- echo -e " Atualização da Distribuição Ubuntu Server Kernel (apt-get dist-upgrade), aguarde..."
71
- echo -e " Versão do Kernel atual: ` uname -r` "
72
- # Fazendo a atualização do Kernel
73
- apt-get -o Dpkg::Options::=" --force-confold" dist-upgrade -q -y --force-yes & >> $LOG
74
- echo
75
- echo -e " Listando os Kernel instalados"
76
- # Listando as imagens dos Kernel instalados
77
- dpkg --list | grep linux-image | cut -d" " -f3
78
- echo -e " Kernel Atualizado com Sucesso!!!, continuando o script..."
79
- echo
80
- echo ============================================================ >> $LOG
103
+ echo -e " Atualização da Distribuição Ubuntu Server Kernel (apt-get dist-upgrade), aguarde..."
104
+ # Fazendo a atualização do Kernel
105
+ # opção do comando: &>> (redireciona a saída padrão, anexando)
106
+ # opção do comando apt-get: -o (option), -q (quiet), -y (yes)
107
+ # opção do comando uname: -r (kernel-release)
108
+ echo -e " Versão do Kernel atual: ` uname -r` "
109
+ apt-get -o Dpkg::Options::=" --force-confold" dist-upgrade -q -y --force-yes & >> $LOG
110
+ echo
111
+ sleep 3
112
+ echo -e " Listando os Kernel instalados"
113
+ # Listando as imagens dos Kernel instalados
114
+ # opção do comando: | (piper - conecta a saída padrão com a entrada padrão de outro comando)
115
+ # opção do comando cut: -d (delimiter), -f (fields)
116
+ dpkg --list | grep linux-image | cut -d" " -f3
117
+ echo -e " Kernel Atualizado com Sucesso!!!, continuando o script..."
118
+ sleep 5
119
+ echo
120
+ echo ============================================================ >> $LOG
81
121
82
- echo -e " Autoremoção dos Aplicativos desnecessários instalados (apt-get autoremove), aguarde..."
83
- # Removendo aplicativos que não estão sendo mais usados
84
- apt-get -y autoremove & >> $LOG
85
- echo -e " Remoção feita com Sucesso!!!, continuando o script..."
86
- echo
87
- echo ============================================================ >> $LOG
88
-
89
- echo -e " Limpando o Cache do Apt-Get (download dos arquivos *.deb | apt-get autoclean e apt-get clean), aguarde..."
90
- # Limpando o diretório de cache do apt-get
91
- apt-get autoclean & >> $LOG
92
- apt-get clean & >> $LOG
93
- echo -e " Cache Limpo com Sucesso!!!, continuando o script..."
94
- echo
95
- echo ============================================================ >> $LOG
122
+ echo -e " Autoremoção dos Aplicativos desnecessários instalados (apt-get autoremove), aguarde..."
123
+ # Removendo aplicativos que não estão sendo mais usados
124
+ # opção do comando: &>> (redireciona a saída padrão, anexando)
125
+ apt-get -y autoremove & >> $LOG
126
+ echo -e " Remoção feita com Sucesso!!!, continuando o script..."
127
+ sleep 5
128
+ echo
129
+ echo ============================================================ >> $LOG
96
130
97
-
98
- echo -e " Fim do Script-00.sh em: ` date` " >> $LOG
131
+ echo -e " Limpando o Cache do Apt-Get (download dos arquivos *.deb | apt-get autoclean e apt-get clean), aguarde..."
132
+ # Limpando o diretório de cache do apt-get
133
+ # opção do comando: &>> (redireciona a saída padrão, anexando)
134
+ apt-get -y autoclean & >> $LOG
135
+ apt-get -y clean & >> $LOG
136
+ echo -e " Cache Limpo com Sucesso!!!, continuando o script..."
137
+ sleep 5
138
+ echo
139
+ echo ============================================================ >> $LOG
140
+ echo -e " Fim do script $0 em: ` date` " >> $LOG
99
141
100
- echo
101
- echo -e " Atualização das Listas do Apt-Get, Atualização dos Aplicativos e Atualização do Kernel Feito com Sucesso!!!!!"
102
- echo
103
- # Script para calcular o tempo gasto para a execução do script-00.sh
104
- DATAFINAL=` date +%s`
105
- SOMA=` expr $DATAFINAL - $DATAINICIAL `
106
- RESULTADO=` expr 10800 + $SOMA `
107
- TEMPO=` date -d @$RESULTADO +%H:%M:%S`
108
- echo -e " Tempo gasto para execução do script-00.sh: $TEMPO "
109
- echo -e " Pressione <Enter> para reinicializar o servidor: ` hostname` "
110
- read
111
- sleep 2
112
- reboot
113
- else
114
- echo -e " Versão do Kernel: $KERNEL não homologada para esse script, versão: >= 4.4 "
115
- echo -e " Pressione <Enter> para finalizar o script"
116
- read
117
- fi
118
- else
119
- echo -e " Distribuição GNU/Linux: ` lsb_release -is` não homologada para esse script, versão: $UBUNTU "
120
- echo -e " Pressione <Enter> para finalizar o script"
121
- read
122
- fi
123
- else
124
- echo -e " Usuário não é ROOT, execute o comando com a opção: sudo -i <Enter> depois digite a senha do usuário ` whoami` "
125
- echo -e " Pressione <Enter> para finalizar o script"
126
- read
127
- fi
142
+ echo
143
+ echo -e " Atualização das Listas do Apt-Get, Atualização dos Aplicativos e Atualização do Kernel Feito com Sucesso!!!!!"
144
+ echo
145
+ # script para calcular o tempo gasto (SCRIPT MELHORADO, CORRIGIDO FALHA DE HORA:MINUTO:SEGUNDOS)
146
+ # opção do comando date: +%T (Time)
147
+ HORAFINAL=$( date +%T)
148
+ # opção do comando date: -u (utc), -d (date), +%s (second since 1970)
149
+ HORAINICIAL01=$( date -u -d " $HORAINICIAL " +" %s" )
150
+ HORAFINAL01=$( date -u -d " $HORAFINAL " +" %s" )
151
+ # opção do comando date: -u (utc), -d (date), 0 (string command), sec (force second), +%H (hour), %M (minute), %S (second),
152
+ TEMPO=$( date -u -d " 0 $HORAFINAL01 sec - $HORAINICIAL01 sec" +" %H:%M:%S" )
153
+ # $0 (variável de ambiente do nome do comando)
154
+ echo -e " Tempo gasto para execução do script $0 : $TEMPO "
155
+ echo -e " Pressione <Enter> para concluir o processo e reinicializar o Servidor."
156
+ # opção do comando date: + (format), %d (day), %m (month), %Y (year 1970), %H (hour 24), %M (minute 60)
157
+ echo -e " Fim do script $0 em: ` date +%d/%m/%Y-" (" %H:%M" )" ` \n" & >> $LOG
158
+ read
159
+ sleep 5
160
+ reboot
0 commit comments