+ Responder ao Tópico



  1. #1

    Padrão Colocar uma case dentro de outra

    Pessoal boa noite

    comecei um uma empreitada para aprender shellscript e dialog,e todo material que eu tenho encontrado na internet,principalmente os do aurélio,tem me satisfeito muito,no entanto surgiu uma dúvida...
    Estou criando em dialog um scriot de gerenciamento basico do sistema,no qual quero que qq usuário,digo,qq MESMO!(requisito minimo:saber ler ,escrever e falar),possa administrar as funç~oes vitais do servidor caso eu naun possa acessá-lo remotamente(mais especificamente,caso uma dor de barriga me impeça de ir trabalhar ou me impeça de chegar perto do computador..hehe)Tudo que eu fiz até o momento funcionou,mas acho que estou fazendo errado,pois em determinado momento ,eu coloco uma case dentro de outra...vajem só..

    Código :
    #!/bin/bash
    ###tela de boas vindas
     ##parametro que especifica que o script deve rodar ignorando sempre as solicitacoes de canecalemtento.a naun ser pela tecla esc
     
    dialog --title 'Bem - Vindo' --msgbox 'Bem-vindo ao Gerenciamento do Sistema' 8 40 
    ##Menu Principal
    ##nesta opacao ele pede para escolher a tarefa incial do prgram,que pode ser monitrar serviços,ou gerencia-los..
    opcao=$( dialog --stdout --menu 'Escolha Uma Tarefa:' 0 0 0 1   Monitorar  2 Gerenciar )
    [ $? -ne 0 ] && echo'saindo'&&  break ##caso o  usuario aperte ESC,ele sai do programa
     
    #caso a opcao seja monitorar,lhe sera perguntadoqual o serviço a ser monitorado
    if test "$opcao" -eq 1 ;then \
    monitorar=$( dialog --stdout --title 'O que voce que monitorar?' --menu 'Selecione uma categoria:' 0 0 0 \ #titulo e subtitulo
    1 'Monitorar Logs' \ #monitora logs
    2 'Monitoriar Carga de Cpu e Memoria' \ #achu que  vc jah adinvinhou o resto né ? :-)
    3 'quero ver todos os processos em andamento' \
    4 'Quero ver o espaço  utilizado em disco' )
    [ $? -ne 0 ] && echo 'saindo...'&& break
    ##Dentro desta case,pensei que poderia criar uma dentro de outra...aki começa  #a duvida..
    case "$monitorar" in
    1) log=$(dialog --stdout --title 'Escolha o Log' --menu 'Selecione o log desejado para eu te mostrar' 0 0 0 \
    1 'Email' \
    2 'Proxy' \
    3 'SysLog' \
    4 'Daemon' \
    5 'Mensagens do sistema' \
    6 'Mensagens que foram postadas durante a inicializacao do sistema' \
    7 'Tentativas de autenticacao por ssh' \
    8 '' )
    case "$logs" in
    1) tail -f /var/log/mail.log > tmail & 
    dialog                          \
    --title 'Monitorando log do email...'\
    --tailbox tmail \  ;;
     
    2) echo 'em construcao' ;;
    3) echo 'em construcao' ;; 
    4) echo 'em construcao' ;;
    5) echo 'em construcao' ;;
    6) echo 'em construcao' ;;
    7) echo 'em construcao' ;;
    8) echo 'em construcao' ;;
    esac
    ;;
    #################################################################################################################
    2) /usr/bin/top ;;
    3) ps -aux|less ;;
    4) /bin/df -h ;;
    esac ;else echo 'bobao' ;fi

    Resumo:Funciona! Mas esse é o certo mesmo em teoricamente falando?
    Sei que existem outros sistemas legais,mas eu preciso treinar shellscript e lógica...

    O que vc acham? é melhor programa as telas como arquivos em separado ou um unico arquivo com todas as funções?

    ABs e feliz 2007

  2. #2

    Padrão

    Não dei uma lida muito profunda no seu programa, mas eu não acho que exista problema em colocar um case dentro do outro. Eu mesmo já fiz inúmeras vezes.

    IMHO, se você quiser organizar o seu código-fonte, utilize identação. Acredite em mim: shell-scripts podem ficar bem grandes. Se o seu programa possuir muitas funções, você pode colocá-las em outro arquivo e depois fazer uso do "include", no cabeçalho do arquivo, embora eu nunca tivesse desenvolvido um sistema tão grande à este ponto, salvo desenvolvimento em linguagens orientadas a objeto.