Pesquise...

Últimos Posts

Arquivo de Posts

2017 - 2016 - 2015 - 2014 - 2013 - 2012

Postagens Populares

Vem Comigo!

         
  •  
  •  
  •  
  •  
  • Tecnologia do Blogger.

    Boletim Informativo?

    * obrigatório

    Total de Acessos

    Saudações,

    Administrar sistemas via linha de comando é uma das minhas paixões. Contudo, um usuário final, não é muito chegado à linha de comando.

    Gerar um GUI para o usuário final faz toda uma diferença. E nós, usuário do Linux, temos N ferramentas a nossa disposição para esta tarefa.

    Entre muitas opções, visto que eu uso o Gnome, eu escolhi o Zenity!

    Shell Bash com Zenity


    Atualmente eu estou usando a versão 3.8.0, confira a sua usando o comando abaixo:

    $ zenity --version

    Depois acesse a sua pagina de manual em https://help.gnome.org/users/zenity/.
    Porquê usar?
    Você pode criar um diálogo para obter informações do usuário. Por exemplo, você pode solicitar que o usuário selecione uma data a partir de um calendário, ou para selecionar um arquivo a partir de uma janela de seleção de arquivos.
    Você pode criar um diálogo para fornecer informações ao usuário. Por exemplo, você pode usar uma barra de progresso para indicar o status atual de uma operação, ou usar uma caixa de aviso para alertar o usuário.

    Vamos criar um formulário de teste?

    Crie um aquivo chamado form-z.bash na sua pasta de scripts:

    $ vi form-z.bash

    Dentro dele coloque o seguinte conteúdo:

    #!/bin/bash
    
    function FormZ () {
        dados=$(zenity --forms \
                       --title="Cadastro Z" --text="FormZulário Z" \
                       --add-calendar="Hoje: " \
                       --add-entry="Nome: " --add-entry="Sobrenome: " \
                       --add-password="Sua senha: " --add-password="Repitir senha: " \
                       --separator=";")
    
        if [ $? -eq 1 ]; then exit 1; fi;
    
        IFS=";";
    
        dados=( ${dados} );
    
        if [[ -z ${dados[1]} ]] || [[ -z ${dados[2]} ]]
        then
            zenity --question --text="\nVocê não preencheu um ou mais campos!\n\nDeseja tentar novamente?" && FormZ;
        elif [[ -z ${dados[3]} || -z ${dados[4]} ]] || [[ ${dados[3]} != ${dados[4]} ]]
        then
            zenity --question --text="\nAs senhas não conferem!\n\nDeseja tentar novamente?" && FormZ;
        else
            echo "$(date) FormZ: dados recebidos: ${dados[@]}";
            zenity --info --text="\n${dados[1]} ${dados[2]}\n\nCadastrado com sucesso!";
        fi
    }
    
    FormZ;
    
    if [ $? -eq 0 ]
    then
        echo "$(date) FormZ: form preenchido corretamente.";
        exit 0;
    else
        echo "$(date) FormZ: form cancelado pelo usuário";
        exit 1;
    fi
    

    Salve o arquivo e dê permissão de execução para ele:

    $ chmod +x form-z.bash

    Agora execute e veja o comportamento do mesmo:

    $ ./form-z.bash


    Basicamente o que a GUI faz é solicitar que o usuário selecione uma data, digite seu nome e sobrenome, uma senha e repita a mesma.

    O Shell processa a variável dados e a converte em uma array; linha 4:

    dados=( ${dados} );

    Depois checamos se o nome ou o sobrenome foram preenchidos; linha 17:

    if [[ -z ${dados[1]} ]] || [[ -z ${dados[2]} ]]

    Em seguida verificamos se as senhas foram digitadas ou se as mesmas são diferentes; linha20:

    elif [[ -z ${dados[3]} || -z ${dados[4]} ]] || [[ ${dados[3]} != ${dados[4]} ]]

    Dentro de cada condição eu usei o operador && para obter um código exit (0 ou 1); controlando assim a execução do script. Veja as linhas 19 e 22:

    zenity --question --text="\nVocê não preencheu um...." && FormZ;

    zenity --question --text="\nAs senhas não conferem..." && FormZ;

    Depois que o usuário preenche corretamente o formulário o script "cai" no else, linha 23, retornando uma mensagem no terminal, e exibe uma mensagem para o usuário parecida com a tela abaixo:



    Você pode, neste ponto do script, processar o que vai para o terminal de várias maneiras, como por exemplo:

    Gerar um cvs;
    Enviar um e-mail;
    Gravar em um banco de dados;
    Gerar outras GUI para interagir com o usuário;
    etc.

    Não se limite... apesar de o Zenity lhe oferecer caixas de diálogos simples, a sua imaginação é quem manda!

    Se você quer deixar o seu script mais profissional, e não quer executar-lo no terminal, não tem problema... você pode criar um ícone usando um arquivo .desktop e colocá-lo dentro da pasta /usr/share/applications/.

    O seu script ficará disponível para todos os usuário do sistema.

    Ou simplesmente use o Alacarte,  editor de menus do Gnome, para criar um ícone como o exemplo abaixo:


    Depois que adicionar, confira se tudo está funcionando clicando no ícone criado:






    Bem, é isto!

    Enriqueça a experiencia entre os seus scripts e os usuários usando o Zenity e a sua imaginação!


    Paz a todos!

    0 comentários:

    Postar um comentário