helpdesk
Publicado por Pedro Fernandes (última atualização em 19/04/2022)
[ Hits: 1.523 ]
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 # ################################################################################
pega IP de sua máquina na NET -DNA do ratinho
Script para listar tentativas de acessos
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Melhorando a precisão de valores flutuantes em python[AJUDA] (11)
GLPI - Configuração de destinatário com conta Microsoft Exchange (0)
Vou voltar moderar conteúdos de Dicas e Artigos (3)
OpenVPN no MACBOOK conecta mas não pinga pastas de rede compartilhada ... (1)