Olá Marcus,

A solução com o exec é interessante, mas você poderia ter resolvido o seu
problema simplesmente definindo no passwd que o shell do seu usuário é o seu
script. Dessa forma, assim que ele logasse, o seu script seria executado e o
usuário não teria um shell disponível ao cancelar a execução do script.

Abraços,

Daniel Carlos
RHCE, LPIC-3


2009/11/14 Marcus Thiago Lages Duarte <marcus_rj...@yahoo.com.br>

>
>
> Excelente explicacao do conrado. Acrescentando um exemplo prático do
> comando exec que me foi extremamente útil há um tempo atrás.
>
> Eu precisava colocar um usuário dentro de um script interativo ao fazer
> logon via ssh, após terminar o script o usuário era desconectado da sessao.
> O usuário não poderia em momento algum ter acesso ao shell, so deveria
> executar o script e sair.
> Beleza, coloquei o script dentro do .bashrc para executar no logon, so que
> tinha um detalhe, o usuário poderia apertar control-c a qualquer momento e
> sair do script e com isso ter acesso ao shell, o que eu realmente nao
> queria.
> Solução? coloquei o script utilizando o exec antes. Tipo -> exec
> /bin/myscript. Pronto! Agora caso o usuário fosse espertinho e digitasse
> control-c ele simplesmente era expulso do logon, já que meu script com o
> "exec" na frente deixou de ser um processo filho do bash, mas passou a ser o
> real (único) shell do usuário.
>
> Abs!
>
> --- Em *qua, 11/11/09, Conrado Pinto Rebessi 
> <conradopi...@gmail.com>*escreveu:
>
>
> De: Conrado Pinto Rebessi <conradopi...@gmail.com>
> Assunto: Re: [lpi] comado exec
> Para: lpi@yahoogrupos.com.br
> Data: Quarta-feira, 11 de Novembro de 2009, 22:58
>
>
>
> Da pagina de manual do bash(1), lah pela linha 3150...
>
> exec [-cl] [-a name] [command [arguments]]
>               If  command  is  specified,  it  replaces  the shell.  No new
> process is created
> traduzindo: Se um comando é especificado, ele toma o lugar do shell. Não é
> criado um novo processo.
> Basicamente, vc tem q pensar em gerencia de processos. O normal, qdo vc
> chama um comando, o kernel "forka" (termo bonito, nao?) um novo processo, ou
> seja, o bash q vc tava usando continua existindo e eh criado um novo
> processo. Qdo vc usa o exec, o processo q vc chamou toma o lugar do bash.
>
> Olha o exemplo:
>
> Sem exec:
> $ pstree -p | grep -B 1 pstree
>                         |-bash(5593) -+-bash(5620)
>                         |            `-pstree(5619)
> conr...@conrado- tablet:~$ ksh
> $ pstree -p | grep -B 1 pstree
>                         |-bash(5593) ---ksh(5621) -+-grep(5623)
>                         |                        `-pstree(5622)
>
> Com exec:
> $ pstree -p | grep -B 1 pstree
>                         |-bash(5563) -+-grep(5581)
>                         |            `-pstree(5580)
> $ exec ksh
> $ pstree -p | grep -B 1 pstree
>                         |-ksh(5563)- +-grep(5584)
>                         |           `-pstree(5583)
>
>
> Ajudei?
>
> []'s
>
> Conrado
>
> 2009/11/10 Wairisson <wgom...@yahoo. 
> com.br<http://mc/compose?to=wgom...@yahoo.com.br>
> >
>
>>
>>
>> alguém pode me dar uma descrição mais tangente do uso prático do comando
>> exec ???
>>
>> Desde já obrigado a tdos !
>>
>>
>
>
> --
> Conrado Pinto Rebessi
> conradopinto@ gmail.com <http://mc/compose?to=conradopi...@gmail.com>
> Linux Registered User #179496
> http://counter. li.org <http://counter.li.org> - Get Counted!
>
> |_|0|_|
> |_|_|0|
> |0|0|0|
>
>
> ------------------------------
> Veja quais são os assuntos do momento no Yahoo! + Buscados: Top 
> 10<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/>-
> Celebridades<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/celebridades/>-
> Música<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/m%C3%BAsica/>-
> Esportes<http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/esportes/>
>  
>

Responder a