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