Criando caixas de diálogo em Shell Scripting com whiptail - Linux
Linux e Unix

Criando caixas de diálogo em Shell Scripting com whiptail - Linux




Neste artigo aprenderemos como criar caixas de diálogo via Shell Scripting usando a ferramenta whiptail.


O whiptail é um programa que nos permite exibir diversos tipos de caixas de diálogo com questões ou mensagens aos usuários a partir de um script do shell. O whiptail utiliza a biblioteca de programação newt, a qual é escrita em linguagem C.
Os tipos de caixas de diálogo implementadas atualmente são: yes/no, inputbox, messagebox, textbox, infobox, checklist, radiolist, gauge e passwordbox.


Usaremos o arquivo de script caixas.sh para nossos testes. Crie-o com o editor vi (ou outro de sua preferência) e não se esqueça de dar permissão de execução após terminar de editá-lo e salvá-lo:
# chmod 755 caixas.sh


1. Vamos começar criando uma Caixa de Mensagem (Message Box). Podemos criar um message box que contenha uma mensagem qualquer e um botão de confirmação usando a sintaxe a seguir:
whiptail --title "<título do message box>" --msgbox "<texto que será exibido>" <altura> <largura>


Exemplo:
#!/bin/bash
whiptail --title "Caixa de Mensagem de Teste" --msgbox "Criando uma caixa de mensagem usando o whiptail. Escolha OK para continuar." --fb 10 50


A opção --fb permite o uso de botões completos (por padrão, o whiptail usa uma versão simplificada dos botões). Testando:
# ./caixas.sh


2. Agora vamos criar uma caixa do tipo “Sim / Não” (Yes/No).
Sintaxe:
whiptail --title "<título da caixa de diálogo>" --yesno "<texto que será exibido>" <altura> <largura>


Exemplo:
#!/bin/bash
if whiptail --title "Testando a caixa Yes/No" --yesno "Escolha entre as alternativas Yes e No." 10 50
then
   echo "Você escolheu Yes. O status de saída é $?."
else
   echo "Você escolheu No. O status de saída é  $?."
fi


3. Trabalhando com o tamanho da caixa exibida:
#!/bin/bash
{
  for ((i=0 ; i<=70 ; i+=10)); do
     whiptail --title “Caixa de Teste” --msgbox “Testando o tamanho da caixa de texto. A largura atual é $i. Pressione OK para prosseguir.” 20 $1
   done
}


4. Exibindo o conteúdo de um arquivo dentro de uma caixa do tipo textbox, com rolagem de tela (scroll):


Exemplo:
#!/bin/bash
whiptail --title “Caixa textbox” --textbox /etc/passwd 20 65 --scrolltext


5. Personalizando o texto dos botões da caixa Yes / No. Para isso usaremos as opções -yes-button" e "--no-button":


Exemplo:
#!/bin/bash
if whiptail --title "Escolhendo o tipo de instalação" --yes-button "Completa" --no-button "Personalizada"  --yesno "Escolha o tipo de instalação desejada" --fb 10 50
then
   echo "Você escolheu a instalação Completa."
else
   echo "Você escolheu a instalação Personalizada."
fi


6. Trabalhando com entrada de texto do usuário: Input Box:
Sintaxe:
whiptail --title "<título do input box>" --inputbox "<texto que será exibido>" <altura> <largura> <texto padrão>


Exemplo:
#!/bin/bash
nome=$(whiptail --title "Entrada de nome do usuário" --inputbox "Digite seu nome:" --fb 10 60 3>&1 1>&2 2>&3)
statussaida=$?
if [ $statussaida = 0 ]; then
   echo "O nome digitado foi: $nome"
else
   echo "Entrada cancelada pelo usuário."
fi


7. Criando uma caixa de senhas:
Sintaxe:
whiptail --title "<título da caixa de senha>" --passwordbox "<texto que será exibido>" altura> <largura>
Exemplo:
#!/bin/bash
senha=$(whiptail --title "Caixa de Senha" --passwordbox "Digite sua senha e escolha OK para continuar." --fb 10 50 3>&1 1>&2 2>&3)
status=$?
if [ $status = 0 ]; then
   echo "A senha digitada foi: $senha"
else
   echo "Entrada cancelada."
fi


8. Criando uma caixa de menu. Com uma caixa de menu podemos pedir para o usuário selecionar um item dentre uma lista de itens.
Sintaxe:
whiptail --title "<título da caixa de menu>" --menu "<texto a ser exibido>" <altura> <largura> <altura da caixa de menu> [ <tag> <item> ]  [ <tag> <item> ] [ <tag> <item> ]. . .


Exemplo:
#!/bin/bash
item=$(whiptail --title "Abrindo aplicativos" --menu "Escolha uma opção na lista abaixo" --fb 15 50 4 \
"1" "Calculadora" \
"2" "Efetuar Backup" \
"3" "Navegar na Internet" \
"4" "Enviar email"  3>&1 1>&2 2>&3)
status=$?
if [ $status = 0 ]; then
   echo "Você escolheu a opção:" $item
else
   echo "Opção cancelada."
fi


9. Criando uma radiolist  para que um usuário possa escolher um único item entre uma lista de itens. Com uma radiolist é possível especificar um item selecionado por padrão:
Sintaxe:
whiptail --title "<título da lista>" --radiolist "<texto a ser exibido>" <altura> <largura> <altura da lista> [ <tag> <item> <status> ]  [ <tag> <item> <status> ] . . .
Exemplo:
#!/bin/bash
cidade=$(whiptail --title "Listagem de Cidades" --radiolist \
"Qual cidade deseja visitar?" 15 50 5 \
"Londres" "Inglaterra" ON \
"Berlim" "Alemanha" OFF \
"Toronto" "Canadá" OFF \
"Abu Dhabi" "Emirados Árabes" OFF \
"Pequim" "China" OFF 3>&1 1>&2 2>&3)
status=$?
if [ $status = 0 ]
then
   echo "A cidade escolhida foi:" $cidade
else
   echo "Você não escolheu nenhuma cidade."
fi


10. Criando uma caixa de diálogo Checklist. Com uma checklist podemos mais de uma opção dentre uma lista de opções, diferentemente da radiolist, que só permite a escolha de uma opção.
Sintaxe:
whiptail --title "<título da checklist>" --checklist "<texto a ser exibido>" <altura> <largura> <altura da checklist> [ <tag> <item> <status> ]  [ <tag> <item> <status> ] . . .
Exemplo:
#!/bin/bash
cidade=$(whiptail --title "Listagem de Cidades" --checklist --fb \
"Quais cidades deseja visitar?" 15 50 5 \
"Londres" "Inglaterra" ON \
"Berlim" "Alemanha" OFF \
"Toronto" "Canadá" OFF \
"Abu Dhabi" "Emirados Árabes" OFF \
"Pequim" "China" OFF 3>&1 1>&2 2>&3)
status=$?
if [ $status = 0 ]
then
   echo "As cidades escolhidas foram: " $cidade
else
   echo "Você não escolheu nenhuma cidade."
fi


11. Vamos trabalhar agora com caixas de diálogo sequenciais, onde o conteúdo de uma caixa de diálogo dependerá do que for selecionado na caixa anterior a ela:
Exemplo:
#!/bin/bash
pais=$(whiptail --title "Listagem de Países" --radiolist --fb \
"Qual país deseja visitar?" 15 50 5 \
"1" "Inglaterra" ON \
"2" "Alemanha" OFF 3>&1 1>&2 2>&3)
status=$?
if [ $status = 0 ]
then
if [ $pais = 1 ]
then
   cidade=$(whiptail --title "Cidades na inglaterra" --radiolist --fb \
   "Escolha a cidade na Inglaterra:" 15 50 5 \
   "Londres" "" ON \
   "Essex" "" OFF \
   "Liverpool" "" OFF 3>&1 1>&2 2>&3)
   status=$?
   if [ $status = 0 ]
   then
        echo “A cidade escolhida foi: “ &cidade
   else
        echo “Opção cancelada pelo usuário”
   fi
else
   cidade=$(whiptail --title "Cidades na Alemanha" --radiolist --fb \
   "Escolha a cidade na Alemanha:" 15 50 5 \
   "Berlim" "" ON \
   "Frankfurt" "" OFF \
   "Dresden" "" OFF 3>&1 1>&2 2>&3)
   status=$?
   if [ $status = 0 ]
   then
        echo “A cidade escolhida foi: “ &cidade
   else
        echo “Opção cancelada pelo usuário”
   fi
fi
else
“Nenhum país selecionado. Entrada cancelada”
fi

Em nosso próximo artigo sobre Shell Scripting, aprenderemos a criar as caixas de diálogo usando uma outra ferramenta muito versátil, chamada de dialog, que utiliza a biblioteca ncurses.



loading...

- Yast - Ferramenta De Configuração Dos Sistemas Opensuse E Sles
Vamos abordar hoje um recurso extremamente interessante encontrado nos sistemas SUSE SLES e openSUSE para gerenciamento do sistema: o pacote YaST.O YaST é uma ferramenta de configuração de sistemas que pode ser utilizado a partir de uma interface...

- Criando Funções Em Shell Scripting - Linux
Conforme começamos a criar scripts do shell mais complexos, acabaremos invariavelmente reusando partes do código que realizam tarefas específicas. Algumas vezes são tarefas simples, como exibir uma mensagem para o usuário, e outras vezes serão...

- Vector Linux - Apresentação E Instalação
Hoje iremos instalar e testar a distribuição Vector Linux, uma distro muito interessante baseada em Slackware.Essa distribuição é desenvolvida no Canadá, e possui versões para arquiteturas de 32 e 64 bits, sendo recomendada para uso em desktops...

- Instalando O Code::blocks No Linux Ubuntu E Criando Um Programa De Teste Em Linguagem C
Em nosso curso básico de linguagem C usaremos o IDE Code::Blocks, que pode ser obtido no site www.codeblocks.org. O Code::Blocks é um IDE open-source que suporta vários compiladores, incluindo o gcc, MinGW, Intel C++ e Visual C++. É escrito em C++...

- Instalação Do Linux Ubuntu 14.04 Trusty
Vamos proceder neste artigo ao download e instalação do Linux Ubuntu 14.04, “Trusty Tahr”. Primeiramente entre no site www.ubuntu.com para baixar a imagem .iso: Clique no link “Desktop” e então em “Get Ubuntu now”. Na próxima página...



Linux e Unix








.