Se você usa Linux e quer dar um toque mais interativo aos seus scripts, o dialog
é uma ferramenta incrível para criar menus e caixas de diálogo direto no terminal. Ele permite a exibição de listas, mensagens e seleção de opções sem precisar instalar bibliotecas pesadas.
Instalando o Dialog
Se ainda não tem o dialog
instalado, é só rodar:
# Debian/Ubuntu
sudo apt install dialog
# Arch Linux
sudo pacman -S dialog
# RHEL/CentOS
sudo yum install dialog
Exemplo: Menu para Conectar a Servidores SSH
Um dos usos mais comuns do dialog
é criar menus para facilitar a seleção de opções em scripts. Em ambientes onde a gestão de vários servidores SSH é necessária, um menu interativo pode economizar tempo e evitar erros ao digitar endereços IP ou credenciais manualmente.
O Script
O script abaixo exibe um menu com uma lista de servidores SSH e permite ao usuário selecionar qual deseja acessar.
#!/bin/bash
# Lista de servidores (Nome, Usuário@IP, Porta)
servers=(
"Servidor 1" "[email protected]" "2222"
"Servidor 2" "[email protected]" "2223"
"Servidor 3" "[email protected]" "22"
"Servidor 4" "[email protected]" "2200"
"Servidor 5" "[email protected]" "2225"
)
while true; do
# Exibir menu
CHOICE=$(dialog --clear --title "Conectar a Servidor" \
--menu "Escolha um servidor para conectar:" 15 50 5 \
"1" "Servidor 1" \
"2" "Servidor 2" \
"3" "Servidor 3" \
"4" "Servidor 4" \
"5" "Servidor 5" \
2>&1 >/dev/tty)
clear
# Verifica a escolha e conecta ao servidor correspondente
if [[ -n "$CHOICE" ]]; then
index=$(( (CHOICE-1)*3 ))
ssh -p "${servers[index+2]}" "${servers[index+1]}" < /dev/tty
else
echo "Nenhuma conexão realizada."
break
fi
done
Explicação do Script
- Definimos uma lista de servidores, onde cada um tem um nome amigável, um IP e uma porta associada.
- O
dialog --menu
exibe um menu com as opções para seleção. - A escolha do usuário é capturada e usada para determinar qual servidor acessar.
- A opção
-p
do SSH é usada para definir uma porta diferente para cada servidor. - O script agora está dentro de um
while true
, garantindo que, após sair do SSH, o menu seja exibido novamente ao invés de voltar ao shell. Caso o usuário não escolha nada, ele sai do loop.
Outras Possibilidades com Dialog
O dialog
é extremamente versátil e pode ser usado para:
- Criar caixas de entrada para solicitar senhas ou informações do usuário.
- Exibir mensagens de alerta ou confirmação antes de executar comandos.
- Construir assistentes de configuração interativos.
Por exemplo, se quiser adicionar uma confirmação antes de conectar ao SSH, basta usar:
dialog --yesno "Deseja conectar ao servidor selecionado?" 7 40
Se a resposta for “Sim”, o script pode prosseguir com a conexão.
Conclusão
O dialog
é uma ferramenta poderosa para adicionar interatividade a scripts shell. Com esse exemplo, você pode criar menus fáceis de usar para tarefas comuns, como conexões SSH, backup, ou qualquer outra automação.