Gerador de senhas com Dialog

Publicado por Giovani Ferreira 20/09/2006

[ Hits: 9.949 ]

Homepage: http://jova2.worpress.com

Download Xgerasenha




Continuando meus estudos sobre Shell Script e Dialog, aperfeiçoei um script gerador de senhas criado anteriormente, agora ele conta com uma interface em Dialog muito legal.

  



Esconder código-fonte

#!/bin/bash
#Script gerador de senhas,
#Feito por Giovani Ferreira.
#Criado com base na apostila e exemplos
#de Aurélio Marinho Jargas. 
#Material disponivel em http://aurelio.net/shell/dialog/
#
#
#
proxima=primeira

# loop principal
while : ; do

    # Aqui é identificada qual tela deve ser mostrada.
    # Em cada tela são definidas as variáveis 'anterior'
    # e 'proxima' # que definem os rumos da navegação.
    case "$proxima" in
        primeira)
            proxima=carac
            dialog \
                --cr-wrap \
                --sleep 4 \
                --backtitle 'Gerador de Senhas'   \
                --title 'Script Gerador de Senhas' \
                --infobox "
      Este é um script gerador de senhas de acordo com
      o comando mkpasswd. Feito por Giovani Ferreira.
      
      
      Navegação:
      
      <Proxima >  Próxima Tela.
      
      <Anterior>  Tela Anterior.
      
         Esc      Sai do Programa.      
                " 15 60
            ;;
        carac)
            anterior=primeira
            proxima=numer
            carac=$(dialog --stdout \
                --backtitle 'Gerador de Senhas' \
      --ok-label 'Próximo' \
      --cancel-label 'Anterior' \
                --inputbox 'Informe quantos caracteres sua senha será composta:' 10 45)
            ;;
        numer)
            anterior=carac
            proxima=maius
            numer=$(dialog --stdout \
                --backtitle 'Gerador de Senhas' \
      --ok-label 'Próximo' \
      --cancel-label 'Anterior' \
                --inputbox 'Informe quantos números farão parte da senha:' 10 45)
            ;;
        maius)
            anterior=numer
            proxima=minus
            maius=$(dialog --stdout \
                --backtitle 'Gerador de Senhas' \
      --ok-label 'Próximo' \
      --cancel-label 'Anterior' \
                --inputbox 'Informe quantas letras MAIUSCULAS farão parte da senha:' 10 45)
       ;;        
   minus)
            anterior=maius
            proxima=espec
            minus=$(dialog --stdout \
                --backtitle 'Gerador de Senhas' \
      --ok-label 'Próximo' \
      --cancel-label 'Anterior' \
                --inputbox 'Informe quantas letras minusculas farão parte da senha:' 10 45)
            ;;
        espec)
            anterior=minus
            proxima=final
            espec=$(dialog --stdout \
                --backtitle 'Gerador de Senhas' \
      --ok-label 'Próximo' \
      --cancel-label 'Anterior' \
                --inputbox 'Informe quantos carasteres especiais farão parte da senha:' 10 45)
            ;;
        final)
            if test $((numer+maius+minus+espec)) -gt $carac
       then
       proxima=carac
       dialog \
                --cr-wrap \
                --sleep 5 \
                --backtitle 'Gerador de Senhas'   \
                --title 'Parâmetros invalidos:' \
                --infobox "
      Impossivel criar a senha com:
      
      Números: $numer
      MAIUSCULAS: $maius
      Minusculas: $minus
      Especiais: $espec
      Em apenas $carac caracteres.
      
      
      Aguarde que o programa será reiniciado...
                
      " 15 50
       else
       s1=$( mkpasswd -l $carac -d $numer -C $maius -c $minus -s $espec )
       s2=$( mkpasswd -l $carac -d $numer -C $maius -c $minus -s $espec )
       s3=$( mkpasswd -l $carac -d $numer -C $maius -c $minus -s $espec )
       proxima=reinicio
       dialog \
                --cr-wrap \
                --sleep 5 \
                --backtitle 'Gerador de Senhas'   \
                --title 'Sugestões de senhas!' \
                --infobox "
      Três sugestões de senhas de acordo com os parâmetros passados.
      
      
      
      $s1
      
      $s2
             
      $s3
      
                " 15 50 \
      --and-widget \
      --begin 35 50 \
      --yesno 'Deseja reiniciar o programa?' 0 0  
        if test $? -eq 0 
      then
       proxima=primeira
        else
        break
        fi
       #break
       fi
       ;;
   *)
            echo "Janela desconhecida '$proxima'."
            echo Abortando programa...
            exit
    esac

    # Aqui é feito o tratamento genérico de Código de Retorno
    # de todas as telas. Volta para a tela anterior se for
    # CANCELAR, sai do programa se for ESC.
    retorno=$?
    [ $retorno -eq 1   ] && proxima=$anterior   # cancelar
    [ $retorno -eq 255 ] && break               # Esc

done

Scripts recomendados

Script para instalação completa do XEN 3.4.0 através do source ( fonte ).

Script para backup

Cadastrando e removendo usuários do SAMBA com um script

Compilador SH-Compiler usando GCC 4.6 no Debian Wheezy

Script para fazer o scroll (a rodinha) do mouse serial funcionar


  

Comentários
[1] Comentário enviado por Wesllay em 20/08/2006 - 06:08h

e ai blz? aqio deu o seguinte erro:

./teste.sh: line 7: dialog: command not found
./teste.sh: line 1: dialog: command not found
./teste.sh: line 1: dialog: command not found
./teste.sh: line 1: dialog: command not found
./teste.sh: line 1: dialog: command not found
./teste.sh: line 1: dialog: command not found
./teste.sh: line 71: test: 0: unary operator expected
./teste.sh: line 1: mkpasswd: command not found
./teste.sh: line 1: mkpasswd: command not found
./teste.sh: line 1: mkpasswd: command not found
./teste.sh: line 98: dialog: command not found

[2] Comentário enviado por jova2 em 21/08/2006 - 22:26h

Para que o script funcione vc tem que ter o 'dialog' instalado na maquina

[3] Comentário enviado por lois.cc em 08/10/2006 - 18:46h

Legal mesmo Giovani, vou utilizar para gerar minhas senhas...

Só uma coisinha para melhorar a estética.

Colocar um clear antes dos "break" e dos "exit", no caso do tratamento do ESC criar um item "fim" dentro do "case" e ao invés de fazer "break" direto fazer "proxima=fim".


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts