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