helpdesk
Publicado por Pedro Fernandes (última atualização em 19/04/2022)
[ Hits: 1.784 ]
Homepage: https://github.com/PedroF37
Download 1639241084.helpdesk (versão 2)
Script que usa o programa sqlite3, para criar base de dados de problema/resolução de problema.
A base de dados é preenchida á medida que problemas vão aparecendo, com usuário dando uma descrição do problema e a possível solução,
(ou deixando em aberto a solução no momento).
Script permite inserir dados (o problema, a solução qual o hardware e software), consultar os dados e consultar a base de dados por problemas que ainda não tenham uma solução registrada para usuário então registrar la.
Precisa de ter instalado o programa sqlite3.
Usuário tem que especificar um diretório para armazenar a base de dados na variável DbHome e tem variáveis no inicio do script para usuário definir, se quiser, o máximo de caracteres permitido por cada coluna da base de dados (hardware, software, description e solution)
Versão 2 - Enviado por Pedro Fernandes em 11/12/2021
Changelog: - Melhoria na função 'QueryData', para usuário não ter que digitar a coluna que quer consultar. Agora usuário apenas digita um número e a função traduz para a coluna correspondente.
- Antes de submeter is dados para a base de dados, deixa o usuário rever e confirmar se quer ou não submeter.
#!/bin/bash
#
################################################################################
#
# SCRIPT helpdesk
# AUTOR Pedro Fernandes
# DATA 20-07-2021 <Inicio>
# VERSÃO 1.0
#
################################################################################
#
# DESCRIÇÃO:
#
# Script que usa o programa sqlite3, para criar e popular uma base de dados
# de problemas e resolução de problemas em computadores.
# A base de dados será populada á medida que problemas vão aparecendo, com
# a descrição do problema e a solução que resolveu esse problema.
# Posteriormente, usuário poderá consultar essa base de dados, por possiveis
# problemas que tenham acontecido antes, e possiveis soluções.
#
################################################################################
#
# DEPENDÊNCIAS:
#
# * sqlite3
#
################################################################################
#
# CONFIGURAÇÃO DE USRÁRIO:
#
# 1. O script cria um dirétório, onde armazena a base de dados.
# Para isso você, usuário(a), tem que especificar qual diretório
# você quer usar, na variável 'DbHome', no inicio do script.
# Por favor colocar caminho completo:
#
# DbHome=/home/pedro/Database
# ou
# DbHome=$HOME/Database
#
# 2. O script cria a base de dados, com o tipo de dados 'varchar', onde o
# máximo de caracteres para cada coluna é especificado nas variáveis no
# inicio do script. Elas são:
#
# SoftLenght --> Tem o máximo de caracteres para a coluna software
# HardLenght --> O maximo de caracteres para a coluna hardware
# DescLenght --> O máximo de caracteres para a coluna description
# SolLenght --> O máximo de caracteres para a coluna Solution
#
# Por padrão os valores são 30, 30, 150, 150, respectivamente.
# Mude para o que preferir, dentro do script ou na chamada:
# EX: SoftLenght 25 ./helpdesk
#
################################################################################
#
# LIMITAÇÕES DO SCRIPT:
#
# Pelo que li na documentação do sqlite3, o valor para o 'AUTOINCREMENT', que é
# usado na coluna id da base de dados do script, é limitado. Limitado por um
# número como '9,223,372,036,854,775,807', se não estou em erro, mas mesmo assim
# não é infinito.
# Por isso, se as entradas na base de dados forem uma coisa absurda de enorme
# pode ser que acabe por falhar o script.
#
################################################################################
#
# VERSÃO/CHANGELOG:
#
### 1.0 Inicio de Script
#
################################################################################
#
##### PARÂMETROS #####
#
### Você especifica aqui o diretório para
### armazenar a base de dados e o máximo
### de caracteres para cada coluna.
#
DbHome=
SoftLenght=${SoftLenght:- 30}
HardLenght=${HardLenght:- 30}
DescLenght=${DescLenght:- 150}
SolLenght=${SolLenght:- 150}
#
### A partir daqui não mexer mais.
#
BackEnd=$(type -p sqlite3)
DbName=TroubleShooter.db
Table=ProbReport
#
################################################################################
#
##### FUNÇÕES #####
#
function ExitMaxTries {
echo
echo $Error1 >&2
echo $Error2 >&2
exit 1
unset Error1
unset Error2
}
#
function ErrorExit {
echo $@ >&2
exit 1
}
#
function ExitSigInt {
clear
echo Script interrompido por usuário.
echo Terminando...
exit 0
}
#
function Proceed {
echo -en "\nPressione <ENTER> para retornar ao menu de início: "
read Dummy
return
}
#
function Banner {
clear
echo -e "\t\t\t\t\t\t*********************************************"
echo -e "\t\t\t\t\t\t* *"
echo -e "\t\t\t\t\t\t* *"
echo -e "\t\t\t\t\t\t* HELPDESK *"
echo -e "\t\t\t\t\t\t* *"
echo -e "\t\t\t\t\t\t* *"
echo -e "\t\t\t\t\t\t*********************************************"
return
}
#
function CreateTable {
> $DbName || {
ErrorExit Erro ao criar base de dados.
}
$BackEnd $DbName <<EOF
create table $Table (
id integer primary key,
hardware varchar($HardLenght) not null,
software varchar($SoftLenght) not null,
description varchar($DescLenght) not null,
solution varchar($SolLenght)
);
EOF
if [ $? -ne 0 ]
then
ErrorExit Erro inesperado na criação de $Table
fi
return
}
#
function InsertData {
$BackEnd $DbName <<EOF
insert into $Table values (NULL, '$Device', '$Os', '$Description', '$Solution');
EOF
if [ $? -eq 0 ]
then
echo Dados inseridos com sucesso.
Proceed
else
ErrorExit Problema ao adicionar dados.
fi
return
}
#
function InsertSolution {
clear
echo -e "Procurando por itens sem solução registrada...\n\n"
ShowItem=$($BackEnd $DbName <<EOF
.mode line
select * from $Table where solution like 'NULL';
EOF
)
if [ -z "$ShowItem" ]
then
echo Não existe nenhum item atualmente na base de dados
echo sem uma solução registrada.
Proceed
return
fi
echo -e "Os seguintes itens não têm uma solução registrada na base de dados:\n\n"
echo "$ShowItem"
echo -en "\n\nSelecione o id do registro para editar: "
read Id
case $Id in
*[!0-9]*)
ErrorExit Input invalido. Terminando...
;;
esac
echo -e "\n\nDigite a solução encontrada para o problema."
echo -e "Máximo de $SolLenght caracteres:"
read Solution
echo -e "Inserindo solução...\n"
$BackEnd $DbName <<EOF
update $Table set solution = '$Solution' where id = $Id;
EOF
if [ $? -eq 0 ]
then
echo Solução para o problema adicionada com sucesso.
Proceed
else
ErrorExit Erro ao tentar adicionar solução para o problema.
fi
return
}
#
function AskData {
Error1="Como se recusa a responder,"
Error2="iremos terminar o script.."
clear
for Try in {1..3}
do
echo "Insira o tipo de hardware. (Ex: desktop, notebook, celular, roteador....)"
echo -n "Máximo de $HardLenght caracteres: "
read Device
if [ "$Device" = '' ]
then
if [ $Try -eq 3 ]
then
ExitMaxTries $Error1 $Error2
fi
echo Não especificou o hardware.
else
break
fi
done
for Try in {1..3}
do
echo -e "\nInsira sistema operacional usado. (EX: Linux, Windows, Android)."
echo -n "Máximo de $SoftLenght caracteres: "
read Os
if [ "$Os" = '' ]
then
if [ $Try -eq 3 ]
then
ExitMaxTries $Error1 $Error2
fi
echo Não especificou o Sistema Operacional.
else
break
fi
done
for Try in {1..3}
do
echo -e "\nDigite uma breve descrição do problema (Ex: pc pegou fogo!!)"
echo Máximo de $DescLenght caracteres:
read Description
if [ "$Description" = '' ]
then
if [ $Try -eq 3 ]
then
ExitMaxTries $Error1 $Error2
fi
echo
echo Não deu a descrição do problema.
else
break
fi
done
echo -en "\nDigite [1] para inserir solução [2] para deixar em branco: "
read -n 1 Choice
case $Choice in
1)
echo -e "\nDigite a solução encontrada"
echo Máximo de $SolLenght caracteres:
read Solution
if [ "$Solution" = '' ]
then
echo Como não digitou nada, iremos deixar em branco.
echo Rode mais tarde o script e escolha a opção 3
echo para atualizar os dados com a solução encontrada.
Solution='NULL'
fi
;;
2)
echo
Solution='NULL'
;;
*)
echo
Solution='NULL'
;;
esac
InsertData "$Device" "$Os" "$Description" "$Solution"
return
}
#
function QueryData {
clear
echo As colunas disponiveis são:
echo id, hardware, software, description e solution.
echo
echo -n "Digite a coluna que contém o termo de pesquisa: "
read Column
echo -en "\nDigite o termo de pesquisa: "
read Search
echo -e "\n\nProcurando por items correspondentes ao seu termo de pesquisa."
echo -e "Aguarde por favor...\n"
sleep 2
clear
$BackEnd $DbName <<EOF
.mode line
select * from $Table
where $Column like '%${Search}%';
EOF
if [ $? -ne 0 ]
then
ErrorExit Erro ao procurar informação na base de dados..
fi
Proceed
return
}
#
function Menu {
while [ 1 ]
do
clear
Banner
echo -e "\n\t\t\t\t\t\t\tPor favor escolha:\n\n"
echo -e "\t\t\t\t\t\t\t1. Inserir dados"
echo -e "\t\t\t\t\t\t\t2. Fazer consulta"
echo -e "\t\t\t\t\t\t\t3. Inserir solução"
echo -e "\t\t\t\t\t\t\t0. Sair do script"
echo -en "\n\n\t\t\t\t\t\tDigite sua opção: "
read -n 1 Choice
case $Choice in
1)
AskData
;;
2)
QueryData
;;
3)
InsertSolution
;;
0)
echo -e "\nTerminando script..."
break
;;
*)
echo -e "\n"
ErrorExit Input inválido. Terminando...
break
;;
esac
done
}
#
################################################################################
#
##### VERIFICAÇÕES #####
#
if [ -z "$BackEnd" ]
then
ErrorExit Por favor instale o programa sqlite3.
fi
if [ -z "$DbHome" ]
then
ErrorExit Não declarou o diretório para a base de dados.
else
if [ ! -d $DbHome ]
then
mkdir $DbHome || {
ErrorExit Erro ao criar diretório $DbHome
}
fi
fi
cd $DbHome || {
ErrorExit Não conseguimos entrar em diretório $DbHome
}
if [ ! -f $DbHome/$DbName ]
then
CreateTable
fi
#
################################################################################
#
##### INICIO #####
#
trap ExitSigInt SIGINT
Menu
exit 0
#
################################################################################
Personalizando o seu shell com bashrc_dahora
Script para o Qemu usando Dialog
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
Scripts ou binários [RESOLVIDO] (3)
VOL já não é mais como antes? (10)
Pergunta: Meu teclado não está respondendo direito como e consertar? ... (4)









