Gerenciador Simples de Empresa
Publicado por Iago Lira (última atualização em 01/06/2016)
[ Hits: 14.036 ]
Homepage: https://notabug.org/iagolira/
Olá pessoal, por gostar de shell script, resolvi criar um sistema simples de empresa. A função do script é fazer o controle de pequenas tarefas, tais como: cadastrar empresa, cliente, pagar por produtos etc.
Na opção de pagamento incluí uma página em HTML com códigos do PayPal (isto é, no script original). Nesta postagem estou mostrando somente o script "seco", sem minhas páginas HTML.
Espero que gostem.
Atenção: o script ficou muito legal.
#!/bin/bash
#+-----------------------------------+
#| Program: gTrue 1.0 |
#| Autor: Francisco Iago Lira Passos |
#| Data: 08-03-2016 |
#+-----------------------------------+
#Variáveis globais
export senha
export compara
#Versão
version="1.0"
#Diretório padrão
dirp=`pwd`
#Código de cores:
corPadrao="\033[0m"
preto="\033[0;30m"
vermelho="\033[0;31m"
verde="\033[0;32m"
marrom="\033[0;33m"
azul="\033[0;34m"
purple="\033[0;35m"
cyan="\033[0;36m"
cinzaClaro="\033[0;37m"
pretoCinza="\033[1;30m"
vermelhoClaro="\033[1;31m"
verdeClaro="\033[1;32m"
amarelo="\033[1;33m"
azulClaro="\033[1;34m"
purpleClaro="\033[1;35m"
cyanClaro="\033[1;36m"
branco="\033[1;37m"
#coluna
coluna=$(echo "$(tput cols)/3" | bc)
#Encriptação:
#Criando chave de segurança:
if [ -f encript ] && [ -f decript ]; then
clear
tput cup 8 $coluna
echo "+-------------------------------------------------------------+"
tput cup 9 $coluna
echo -e "| |"
tput cup 10 $coluna
echo "| |"
tput cup 11 $coluna
echo "+-------------------------------------------------------------+"
tput cup 9 $(($coluna+2))
echo "Digite sua senha root: "
tput cup 10 $(($coluna+2))
#---------------------------------------
su -c 'mv encript /bin/ && mv decript /bin/ && chmod +x /bin/encript && chmod +x /bin/decript'
elif [ -f /bin/encript ] && [ -f /bin/decript ]; then
tput cup 8 $(($coluna+2))
echo "Bem-vindo ao sistema!"
else
echo "Erro: falta os arquivos de encriptação e decriptação!"
exit
fi
#Segurança:
function avanca ()
{
#Verificando diretórios e arquivos:
[ -d cript ] || mkdir cript
[ -d cadastro ] || mkdir cadastro
[ -d cliente ] || mkdir cliente
#---------------------------------
clear
tput cup 8 $coluna
echo "+-------------------------------------------------------------+"
tput cup 9 $coluna
echo -e "|$vermelho Digite uma senha para acessar seu sistema $corPadrao |"
tput cup 10 $coluna
echo "| |"
tput cup 11 $coluna
echo "+-------------------------------------------------------------+"
while :
do
if [ -f cript/pass.cript ]; then
compara=$(decript "$(cat cript/pass.cript)")
tput cup 10 $(($coluna+2))
read -s -p "Digite sua senha: " senha
if [ "$senha" = "$compara" ]; then
break
else
tput cup 9 $coluna
echo -e "|$vermelho Digite uma senha valida para acessar seu sistema $corPadrao |"
tput cup 10 $(($coluna+2))
read -s -p "Digite sua senha: " senha
[ "$senha" = "$compara" ] && break
fi
else
clear
tput cup 8 $coluna
echo "+-------------------------------------------------------------+"
tput cup 9 $coluna
echo -e "|$vermelho Digite uma senha para acessar seu sistema $corPadrao |"
tput cup 10 $coluna
echo "| |"
tput cup 11 $coluna
echo "+-------------------------------------------------------------+"
tput cup 10 $(($coluna+2))
#Verificando se existe o arquivo pass.cript
read -s -p "Digite uma senha com mínimo 8 dígitos: " oitop
encript "$(echo $oitop)" > cript/pass.cript
tput cup 10 $(($coluna+2))
su -c 'chown root:$USER cript; chmod 1755 cript;
chown root:$USER cript/pass.cript; chmod 1755 cript/pass.cript'
fi
done
}
#Cadastro da empresa
function cadastro_empresa ()
{
avanca
if [ "$senha" = "$compara" ]; then
if [ -f cadastro/empresa.cad ]; then
tput cup 10 $(($coluna+2))
echo "Atenção! Empresa já cadastrada!"
else
clear
tput cup 8 $coluna
echo "+----------------------------------------------------------------+"
tput cup 9 $coluna
echo "| |"
tput cup 10 $coluna
echo "| |"
tput cup 11 $coluna
echo "| |"
tput cup 12 $coluna
echo "| |"
tput cup 13 $coluna
echo "| |"
tput cup 14 $coluna
echo "| |"
tput cup 15 $coluna
echo "| |"
tput cup 16 $coluna
echo "| |"
tput cup 17 $coluna
echo "+----------------------------------------------------------------+"
tput cup 9 $(($coluna+1))
read -p "Digite o nome da sua empresa:" nome_empresa
tput cup 10 $(($coluna+1))
read -p "Digite o CNPJ:" cnpj
tput cup 11 $(($coluna+1))
read -p "Digite o nome do proprietário:" propietario_empresa
tput cup 12 $(($coluna+1))
read -p "Digite a afiliação:" afiliacao_empresa
tput cup 13 $(($coluna+1))
read -p "Digite a logomarca:" logomarca_empresa
tput cup 14 $(($coluna+1))
read -p "Digite o e-mail da empresa:" email_empresa
tput cup 15 $(($coluna+1))
echo -n "Digite seu Cel.:";read -n 2 -p "(" c1; read -n 1 -p ")" c3; read -n 4 -p "" c4 ;read -n 4 -p "-" c5
tput cup 16 $(($coluna+1))
echo -n "Digite seu Tel.:";read -n 2 -p "(" t1; read -n 1 -p ")" t3; read -n 3 -p "" t4 ;read -n 4 -p "-" t5
encript "$(echo Telefone: $t1$t3$t4$t5)" > cadastro/empresa.cad
encript "$(echo Celular: $c1$c3$c4$c5)" >> cadastro/empresa.cad
encript "$(echo E-mail: $email_empresa)" >> cadastro/empresa.cad
encript "$(echo Logomarca: $logomarca_empresa)" >> cadastro/empresa.cad
encript "$(echo Afiliação: $afiliacao_empresa)" >> cadastro/empresa.cad
encript "$(echo Proprietário: $propietario_empresa)" >> cadastro/empresa.cad
encript "$(echo CNPJ: $cnpj)" >> cadastro/empresa.cad
encript "$(echo Empresa: $nome_empresa)" >> cadastro/empresa.cad
#Modificando permissões de acesso:
if [ $? -eq 0 ]; then
clear
tput cup 8 $coluna
echo "+-------------------------------------------------------------+"
tput cup 9 $coluna
echo -e "| |"
tput cup 10 $coluna
echo "| |"
tput cup 11 $coluna
echo "+-------------------------------------------------------------+"
tput cup 9 $(($coluna+2))
echo "Digite sua senha root: "
tput cup 10 $(($coluna+2))
#---------------------------------------
su -c 'chown root:$USER cadastro; chmod 1755 cadastro;
chown root:$USER cadastro/*; chmod 1755 cadastro/*'
#---------------------------------------
fi
fi
else
echo "Alerta! Há algum problema com sua senha!"
fi
}
#Cadastro dos clientes
#Cadastro da empresa
function cadastro_clientes () {
if [ "$senha" = "$compara" ]; then
clear
tput cup 8 $coluna
echo "+----------------------------------------------------------------+"
tput cup 9 $coluna
echo "| |"
tput cup 10 $coluna
echo "| |"
tput cup 11 $coluna
echo "| |"
tput cup 12 $coluna
echo "| |"
tput cup 13 $coluna
echo "| |"
tput cup 14 $coluna
echo "| |"
tput cup 15 $coluna
echo "| |"
tput cup 16 $coluna
echo "| |"
tput cup 17 $coluna
echo "+----------------------------------------------------------------+"
tput cup 9 $(($coluna+1))
read -p "Digite o nome do cliente:" nome_cliente
tput cup 10 $(($coluna+1))
echo -n "Digite seu cpf:"; read -n 3 -p "" cp1; read -n 3 -p "." cp2; read -n 3 -p "." cp3; read -n 2 -p "-" cp4
tput cup 11 $(($coluna+1))
read -p "Digite o nome do produto:" nome_compra
tput cup 12 $(($coluna+1))
read -p "Digite o valor da compra:" valor_compra
tput cup 13 $(($coluna+1))
echo -n "Digite a data da compra:"; read -n 2 dt0; read -n 2 -p '/' dt1; read -n 2 -p '/' dt2; read -n 2 dt3
tput cup 14 $(($coluna+1))
read -p "Digite o e-mail do cliente:" email_cliente
tput cup 15 $(($coluna+1))
echo -n "Digite seu Cel.:";read -n 2 -p "(" c1; read -n 1 -p ")" c3; read -n 4 -p "" c4 ;read -n 4 -p "-" c5
tput cup 16 $(($coluna+1))
echo -n "Digite seu Tel.:";read -n 2 -p "(" t1; read -n 1 -p ")" t3; read -n 3 -p "" t4 ;read -n 4 -p "-" t5
#Este será usado para verificar os cpfs
cpfs="$cp1.$cp2.$cp3-$cp4"
#Diretório padrão da pasta cliente
number=$(echo $(ls $dirp/cliente | grep 'cad' | wc -l))
padraoc=$dirp/cliente/$(echo "cliente$number.cad")
#Enviando o nome do cliente para um arquivo
echo "$(echo "cliente$number.cad") $nome_cliente $cpfs" >> $dirp/cliente/client_name.txt
#Verificar se nome não foi inserido duas vezes
if [ -f cliente/client_name.txt ] ; then
num1=$(cat $dirp/cliente/client_name.txt | wc -l | bc)
if [ "$num1" != "1" ]; then
grep "$cpfs" cliente/client_name.txt; flag0=$?
fi
fi
#Se o cpf já existir, então o processo é parado, caso contrário prosegue
if [ "$flag0" = "0" ]; then
echo "O cliente já existe!"
sed "/$cpfs/d" $dirp/cliente/client_name.txt
else
#Salvando os dados num arquivo criptografado
encript "$(echo "Telefone: $t1$t3$t4$t5")" > $padraoc
encript "$(echo "Celular: $c1$c3$c4$c5")" >> $padraoc
encript "$(echo "E-mail: $email_cliente")" >> $padraoc
encript "$(echo "Data da compra: $dt0/$dt1/$dt2$dt3")" >> $padraoc
encript "$(echo "Valor da compra: $valor_compra")" >> $padraoc
encript "$(echo "Nome do produto: $nome_compra")" >> $padraoc
encript "$(echo "Cpf: $cp1.$cp2.$cp3-$cp4")" >> $padraoc
encript "$(echo "Nome: $nome_cliente")" >> $padraoc
fi
else
echo "Alerta! Há algum problema com sua senha!"
fi
}
#Função para excluir clientes
function deleta_cliente ()
{
tput cup 8 $coluna
echo -e "+--------------------------------------------------------------+";
tput cup 9 $coluna
echo "| Digite o CPF para deletar o cliente |"
tput cup 10 $coluna
echo "| |"
tput cup 8 $coluna
echo -e "+--------------------------------------------------------------+";
tput cup 10 $(($coluna+1))
echo -n "Digite seu cpf:"; read -n 3 -p "" pf1; read -n 3 -p "." pf2; read -n 3 -p "." pf3; read -n 2 -p "-" pf4
cpf1=$(echo "$pf1.$pf2.$pf3-$pf4")
while read id
do
cpf2=$(echo $id | sed 's/.*.cad//g;s/[^0123456789.-]//g')
if [ "$cpf2" = "$cpf1" ]; then
rm $dirp/cliente/$(echo $id | awk '{print $1}')
sed -i "/$cpf2/d" $dirp/cliente/client_name.txt
fi
done < cliente/client_name.txt
}
#Função que mostra os preços dos produtos
function preco () {
tput cup 8 $coluna;
echo -e "+--------------------------------------------------------------+";
tput cup 9 $coluna;
echo -e "| ($vermelho 1 $corPadrao) Preço $azul R$ 10,00 $corPadrao |";
tput cup 10 $coluna;
echo -e "| ($vermelho 2 $corPadrao) Preço $azul R$ 11,00 $corPadrao |";
tput cup 11 $coluna;
echo -e "| ($vermelho 3 $corPadrao) Preço $azul R$ 12,00 $corPadrao |";
tput cup 12 $coluna;
echo -e "| ($vermelho 4 $corPadrao) Preço $azul R$ 13,00 $corPadrao |";
tput cup 13 $coluna;
echo -e "| ($vermelho 5 $corPadrao) Preço $azul R$ 14,00 $corPadrao |";
tput cup 14 $coluna;
echo -e "| ($vermelho 6 $corPadrao) Preço $azul R$ 15,00 $corPadrao |";
tput cup 15 $coluna;
echo -e "| ($vermelho 7 $corPadrao) Preço $azul R$ 16,00 $corPadrao |";
tput cup 16 $coluna;
echo -e "| ($vermelho 8 $corPadrao) Preço $azul R$ 17,00 $corPadrao |";
tput cup 17 $coluna;
echo -e "| ($vermelho 9 $corPadrao) Preço $azul R$ 18,00 $corPadrao |";
tput cup 18 $coluna;
echo -e "| ($vermelho 10 $corPadrao) Preço $azul R$ 19,00 $corPadrao |";
tput cup 19 $coluna;
echo -e "| ($vermelho 11 $corPadrao) Preço $azul R$ 20,00 $corPadrao |";
tput cup 20 $coluna;
echo -e "| ($vermelho 12 $corPadrao) Preço $azul entre R$ 21,00 e R$ 40,00 $corPadrao |";
tput cup 21 $coluna;
echo -e "| |";
tput cup 22 $coluna;
echo -e "| |";
tput cup 23 $coluna;
echo -e "+--------------------------------------------------------------+";
tput cup 22 $(($coluna+11));
read -n 1 -p "Digite o número da opção desejada: " preco;
return preco;
}
#Em teste
function reset_system ()
{
tput cup 8 $coluna
echo -e "+--------------------------------------------------------------+";
tput cup 9 $coluna
echo "| Digite o CPF para deletar o cliente |"
tput cup 10 $coluna
echo "| |"
tput cup 8 $coluna
echo -e "+--------------------------------------------------------------+";
tput cup 10 $(($coluna+1))
echo -n "Digite seu cpf:"; read -n 1 -p "Deseja realmente resetar o sistema (s/n)?" sn
if [ "$sn" = "s" ]; then
tput cup 9 $coluna
echo "| Digite a senha do usuário root para deletar o cliente |"
tput cup 10 $(($coluna+1))
su -c 'rm -rf cript/ cadastro/ cliente/'
fi
}
#Menu
function menu ()
{
clear
tput cup 8 $coluna
echo -e "$corPadrao+---------------------------------------+"
tput cup 9 $coluna
echo -e "| $vermelho gTrue \033[0;31m $version $corPadrao |"
tput cup 10 $coluna
echo -e "| |"
tput cup 11 $coluna
echo -e "| (1) $azulClaro Cadastrar Empresa $corPadrao |"
tput cup 12 $coluna
echo -e "| (2) $azulClaro Cadastrar Cliente $corPadrao |"
tput cup 13 $coluna
echo -e "| (3) $azulClaro Remover Cliente $corPadrao |"
tput cup 14 $coluna
echo -e "| (4) $azulClaro Pagar Produto $corPadrao |"
tput cup 15 $coluna
echo -e "| (5) $azulClaro Resetar sistema $corPadrao |"
tput cup 16 $coluna
echo -e "| (6) $azulClaro Sair $corPadrao |"
tput cup 17 $coluna
echo -e "| |"
tput cup 18 $coluna
echo -e "| |"
tput cup 19 $coluna
echo -e "+---------------------------------------+"
tput cup 18 $(($coluna+8))
read -n 1 -p 'Digite sua opção: ' opcao
echo ''
echo ''
}
#Chamar o menu
menu
#Ao pressionar uma tecla executar: 051.525.899-02
while :
do
case "$opcao" in
1) avanca;
if [ "$senha" = "$compara" ]; then cadastro_empresa; menu; else echo "Senha incorreta!"; menu; fi;
;;
2) avanca;
if [ "$senha" = "$compara" ]; then cadastro_clientes; menu; else echo "Senha incorreta!"; menu; fi;
;;
3) avanca;
if [ "$senha" = "$compara" ]; then deleta_cliente; menu; else echo "Senha incorreta!"; menu; fi;
;;
4) avanca;
if [ "$senha" = "$compara" ]; then preco; menu; else echo "Senha incorreta!"; menu; fi;
;;
5) avanca;
if [ "$senha" = "$compara" ]; then reset_system; menu; else echo "Senha incorreta!"; menu; fi;
;;
6) echo "Você saiu!";
exit;
;;
*) menu
;;
esac
done
Iniciar nova instância do Firefox quando o mesmo não está respondendo
Backup com dump, restore, sendmail e log completo
Testa se há conexão com a internet (Funciona)
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Como personalizar o lxde? [RESOLVIDO] (5)
Flatpaks não funcionam após atualizar pelo Gerenciador de Atualizações... (3)
Erro no suitable vídeo mode (15)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (2)









