+ Responder ao Tópico



  1. #1

    Padrão Shell script e CTRL + C

    Ae povo,

    Seguinte... estou fazendo um "programinha" em Shell script que sera executado toda vez que o usuario logar e nesse programinha tem uma opcao para o cara sair e quando o cara escolhe isso ele efetua um logout, sacaram?

    o problema é o seguinte, se o cara pressionar CTRL+C no meu do "programinha" ele cai no bash, sacaram? isso não pode acontecer!!

    Flws


    Cebolinha
    [email protected]

  2. #2

    Padrão Shell script e CTRL + C

    na verdade vc vai ter q tratar mto + alem do CTRL+C, vc vai ter q tratar sinais, pra ninguem matar o processo, eu jah fiz esse eskema de pegar o sinal mas foi em C.... da uma googlada prokurando por signal + bash



  3. #3

    Padrão Shell script e CTRL + C

    Citação Postado originalmente por 1c3_m4n
    da uma googlada prokurando por signal + bash
    ai meu car*** me mostra a bos*** (ateh rimou) do dicionario q tem esse verbo!!!!!!!!!!!!!!!!!!!!!

    http://garimpar.com/search/?q=signal+bash


  4. #4
    LenTu
    Visitante

    Padrão Shell script e CTRL + C

    Citação Postado originalmente por 1c3_m4n
    googlada
    q traição eh essa ic3 ??????




  5. #5

    Padrão Shell script e CTRL + C

    Opa,

    Valew Ice_man, mas vc por acaso conhece outra maneira que eu poderia fazer isso??? acontece o seguinte.. os meus clientes nao possuem tty abertas, certo.. ou seja.. eles nao podem mexer na maquina linux deles, so eu remotamente, acontece que eu quero liberar um programinha para os clientes executarem alguns tarefas, mas eles nao podem ter acesso ao Bash de forma alguma, como eu poderia fazer? eu tinha pensado nessa posibilidade, do cara usar o putty e logar com o seu usuario.. ai rodar o script automatico e depois logout quando o cara sair do programa, acontece que o CTRL+C cancela o script e ele cai no bash! alguma ideia??


    Cebolinha
    VSP Brasil

  6. #6

    Padrão Shell script e CTRL + C

    ta certo galera eu errei

    antes de dar uma googlada, da uma garimpada :lol:
    www.garimpar.com



  7. #7

    Padrão Shell script e CTRL + C

    Bom acho q vc vai ter q fazer em C mesmo, me parece meio complexo pra fazer em bash, ou eu q num manjo de bash o suficiente hehehehe

    Ae vc faz seguinte, faz uma rotina que verifica o se o cara ta logado, qdo ele desconectar vc enviar um sinal proprio pra terminar o programa, assim vc num corre o risco de alguem cancelar

  8. #8

    Padrão Shell script e CTRL + C

    dessa vez eu ti perdoo ice_man...=** mas q nao se repita....

    bom cara...pelo q eu entendi...vc pode criar um shell q tenha soh um comando....o do seu programa, dai quando ele se logar no putty ele soh vai ter uma opcao de comando a do seu programa....ele num consiguiria nem ao menos dar um "ls"....flw



  9. #9

    Padrão Shell script e CTRL + C

    certo,

    seria uma opcao. como eu faria isto??

  10. #10

    Padrão Shell script e CTRL + C

    ai vai um exemplo simples:

    Código :
    void apanha(int sinal)
    {
            if((sinal==15) || (sinal==17) || (sinal==19) || (sinal==23))
            {
                    grava_log("Servidor terminado");
                    exit(1);
            }
            else if(sinal == 4)
            {
                    grava_log("ERRO: Illegal Instruction");
                    exit(errno);
            }
            else if(sinal == 11)
            {
                    grava_log("ERRO: Invalid Memory Reference");
                    exit(errno);
            }
            else if(sinal == 13)
            {
                    grava_log("ERRO: Broken Pipe");
                    exit(errno);
            }
    }
    agora o main do programa:
    Código :
     
    #define MENOR_SINAL_STANDARD 1 /*(ver: man 7 signal)*/
    #define MAIOR_SINAL_STANDARD 31 /*(ver: man 7 signal)*/
     
            /* captura os sinais recebidos */
            int i;
            for(i=MENOR_SINAL_STANDARD; i<=MAIOR_SINAL_STANDARD; i++)
                    signal(i, apanha);

    eh claro q tirei o resto, mas esse eh o grosso do q vc vai precisar



  11. #11

    Padrão Shell script e CTRL + C

    pra fazer isso em bash vc deve usar o comando 'trap'

    ex:
    --inicio do strip---------------------------
    trap "clear; ls -laF" 0 1 2 3 15

    sleep 10
    --fim do strip---------------------------

    executando isso, ira parar no sleep. Se vc receber sinais 0, 1,2,3 ou 15 ele ira executar os comandos "clear; ls -laF"

    ------------------------------------
    a2gs
    C/C++ POSIX code 4 Sex, Money & Fun!! Eh claro!

  12. #12
    andreguerra
    Visitante

    Padrão Shell script e CTRL + C

    Ola Pessoal,

    Talvez nao fosse mais facil botar o usuario dentro de um chroot com apenas a funcao que vc quer q ele execute, por exemplo: seu programa!

    Valeu, espero ter ajudado e parabens pelo nível do forum, simplesmenet excelente!

    André



  13. #13

    Padrão Shell script e CTRL + C

    Tb eh uma saida interessante, o problema eh q se o programa do cara tiver q ter acesso a mtas libs vai dar um trabalho do cao pra montar o jail chroot certinho

  14. #14
    holoturoide
    Visitante

    Padrão gambiarra

    uma solução bem mais simples seria criar um usuario, e no lugar da shell padrao dele ser o bash, seria o script em questao, se o script finalizar a sessao terminará

    abraços, holoturoide