Criando Menus Interativos no Terminal com Dialog no Linux

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.

Rolar para cima