-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsistema_de_usuarios.sh
executable file
·111 lines (97 loc) · 3.48 KB
/
sistema_de_usuarios.sh
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
#!/usr/bin/env bash
#
# sistema_de_usuarios.sh - simula um banco de dados .txt
#
# Autor: Deyvisson Eduardo
# Manutenção: Deyvisson Eduardo
#
# ------------------------------------------------------------------------ #
# Este programa irá simular um banco de dados com intuito de aprondunda conhecimentos em shell
#
# Exemplos:
# $ ./sistema_de_usuarios.sh InsertUser 1:teste:[email protected]
# Inseri um usuario no banco.txt.
# ------------------------------------------------------------------------ #
# Histórico:
#
# v1.0 09/02/2021, Deyvisson:
# - Início do programa
# - Funcionalidades de Inserir e excluir
# v1.1 13/02/2021, Deyvisson:
# - Implementado Dialog
# - Menu Principal
# ------------------------------------------------------------------------ #
# Testado em:
# bash 5.0.8
# ------------------------------------------------------------------------ #
# ------------------------------- VARIÁVEIS ----------------------------------------- #
DATABASE="banco.txt"
SEP=:
MSGN_SUCESS="\033[34;1m"
MSGN_ERROR="\033[31;1m"
NEGRITO="\033[1m"
TEMP=temp.$$ # pid
# ------------------------------------------------------------------------ #
# ------------------------------- TESTES ----------------------------------------- #
# tem banco
[ ! -e "$DATABASE" ] && echo -e "${MSGN_ERROR}Arquivo não encontrado" && exit 1
[ ! -r "$DATABASE" ] && echo -e "${MSGN_ERROR}Não tem permissão de leitura" && exit 1
[ ! -w "$DATABASE" ] && echo -e "${MSGN_ERROR}Não tem permissão de escrita" && exit 1
# dialog
[ ! -x "$(which dialog)" ] && sudo apt install -y dialog 1> /dev/null 2>1
# ------------------------------------------------------------------------ #
# ------------------------------- FUNÇÕES ----------------------------------------- #
ListUser(){
egrep -v "^#|^$" "$DATABASE" | tr : ' ' > $TEMP
dialog --title "Lista de Usuarios" --textbox "$TEMP" 20 40
rm -f "$TEMP"
}
ExistsUset(){
grep -i -q "$1$SEP" "$DATABASE"
}
InsertUser(){
local last_id="$(egrep -v "^#|^$" "$DATABASE" | tail -n 1 | cut -d $SEP -f 1)"
local next_id=$(($last_id+1))
local name=$(dialog --title "Cadastro de Usuario" --stdout --inputbox "Digite o seu nome" 0 0)
[ ! "$name" ] && exit 1
ExistsUset "$name" && {
dialog --title "Error!!!" --msgbox "Usuario ja cadastrado" 6 40
exit 1
}
local email=$(dialog --title "Cadastro de Usuario" --stdout --inputbox "Digite o seu e-mail" 0 0)
echo "$next_id$SEP$name$SEP$email" >> "$DATABASE"
dialog --title "Sucesso!!!" --msgbox "Cadastrado!!" 6 40
ListUser
}
DeleteUser(){
# busca por id
local user=$(egrep -v "^#|^$" "banco.txt" | sort -h | cut -d : -f 1,2 | sed 's/:/ "/;s/$/"/')
local id_user=$(eval dialog --stdout --menu \"Escolha um usuario:\" 0 0 0 $user)
# remove
grep -i -v "^$id_user$SEP" "$DATABASE" > "$TEMP"
mv "$TEMP" "$DATABASE"
dialog --msgbox "Excluido!!" 6 40
ListUser
}
OrderList(){
sort "$DATABASE" > "$TEMP"
mv "$TEMP" "$DATABASE"
}
# ------------------------------------------------------------------------ #
# ------------------------------- EXECUÇÃO ----------------------------------------- #
while :
do
action=$(dialog --title "Sistema Usuarios" \
--stdout \
--menu "Escolha uma das opções abaixo:" \
0 0 0 \
listar "Lista todos usuarios" \
remover "Deleta um usuario" \
inserir "Inserir um novo usuario")
case $action in
listar) ListUser ;;
inserir) InsertUser ;;
remover) DeleteUser ;;
esac
done
# ------------------------------------------------------------------------ #