-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathatualizar-sistema
executable file
·119 lines (91 loc) · 3.03 KB
/
atualizar-sistema
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/bin/bash
script_temporario="/tmp/atualizar_sistema"
if [ ! -z "$DISPLAY" ] && [ -z "$SSH_CONNECTION" ] && [ -z "$SSH_CLIENT" ] && [ -z "$SSH_TTY" ]; then
RODAR_PRIVILEGIADO="/usr/bin/pkexec"
else
RODAR_PRIVILEGIADO="/usr/bin/sudo"
fi
verifica_usuario_logado(){
local usuario="$1"
sessoes="$(loginctl list-sessions --no-legend | grep "$usuario" | awk '{print $1}' | xargs -I {} loginctl show-session -p Type --value {} | grep -E 'x11|wayland' | sort | uniq)"
if [ ! -z "$sessoes" ]; then
return
fi
false
}
script_atualizador(){
cat << 'EOF'
#!/bin/bash
export ZYPP_MEDIANETWORK=1
box(){
local sentence="$1"
local sentenceLenght=${#sentence}
local horizontalSpacing=$(($sentenceLenght+2))
local leftUpperCornerSymbol="╔"
local rightUpperCornerSymbol="╗"
local leftBottomCornerSymbol="╚"
local rightBottomCornerSymbol="╝"
local horizontalSymbol="═"
local verticalSymbol="║"
for line in $(seq 1 $horizontalSpacing)
do
local horizontalLine=$horizontalSymbol$horizontalLine
done
echo "$leftUpperCornerSymbol$horizontalLine$rightUpperCornerSymbol"
echo "$verticalSymbol${horizontalLine//$horizontalSymbol/ }$verticalSymbol"
echo "$verticalSymbol $sentence $verticalSymbol"
echo "$verticalSymbol${horizontalLine//$horizontalSymbol/ }$verticalSymbol"
echo "$leftBottomCornerSymbol$horizontalLine$rightBottomCornerSymbol"
}
atualizar_repositorios(){
local comando="$1"
box "Atualizando as informações dos repositórios"
box "Executando \"$comando\""
$comando
sleep 1
}
encerrar_packagekit(){
local sinalizador=$1
while [ -f $sinalizador ]; do
if [ ! -z "$(pgrep -f "packagekitd")" ]; then
pkill -f "packagekitd" -9
fi
sleep 0.1
done
}
atualizar() {
local comando="$1"
box "Prosseguindo para a atualização dos pacotes..."
box "Executando \"$comando\""
box "Verifique o que será realizado antes de prosseguir!!"
$comando
retorno=$?
if [ $retorno -ne 0 ]; then
box "Algo deu errado!! Você pode tentar novamente."
fi
read -rep $'\nPressione ENTER para sair...\n'
}
sinalizador=$(mktemp)
atualizar_repositorios "pkcon get-updates"
encerrar_packagekit $sinalizador &
atualizar "/usr/bin/zypper dist-upgrade --auto-agree-with-licenses"
rm -f $sinalizador
rm -rf /var/tmp/rpm-tmp.*
rm -rf /var/tmp/zypp.*
EOF
chmod +x $script_temporario
}
if [ -z $1 ] && [ "$RODAR_PRIVILEGIADO" = "/usr/bin/pkexec" ]; then
/usr/bin/xfce4-terminal --hide-menubar --hide-toolbar --zoom 1.5 --maximize -e "$0 0" -T "Instalar atualizações"
else
script_atualizador > $script_temporario
$RODAR_PRIVILEGIADO bash $script_temporario
rm -f $script_temporario
if verifica_usuario_logado "$USER"; then
killall -q package-update-indicator -9
while ! pgrep -f "/usr/bin/package-update-indicator" > /dev/null; do
DISPLAY=:0 nohup /usr/bin/package-update-indicator > /dev/null 2>&1 &
sleep 0.1
done
fi
fi