Terminar sessao de user quando termina script [RESOLVIDO]

1. Terminar sessao de user quando termina script [RESOLVIDO]

daniel
danueli

(usa Ubuntu)

Enviado em 12/08/2019 - 20:37h

Oi gente!

já fiz muita pesquisa aqui no vivolinux mas nao encontrei resposta para o que preciso.

Então é assim. Conecto a servidor ubuntu 180.4 LTS Server por Putty. Com User AAA
Meto a rolar o script.sh e precisava que quando ele atinge a ultima linha do script ele faça o logout (fazendo com que feche tambem o terminal putty).

Tem maneira de fazer? Já experimentei com exit e logout. e nao funciona. Estou com shell /bin/bash

Obrigado Fico aguardar resposta


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 29/08/2019 - 01:47h

danueli escreveu:

Antes de mais Obrigado pelas soluções

paulo1205 escreveu:
if (( SHLVL > 1 )); then
kill -HUP $PPID
fi



SHLVL pesquisei por essa "var" nao percebi o que faz ela antes de executar gostaria de compreender.


É uma variável interna do bash, cujo nome é uma abreviação de “shell level”, e que é incrementada a cada vez que você chama um shell novo. Assim sendo, se você fez login tendo o bash como shell, a variável começa com o valor 1. Chamando um script a partir desse shell de login, a nova instância de shell, usada pelo script, vai partir do valor anterior e incrementá-la, dentro do script, para o valor 2. Se esse script chamar outro script dentro de si, formando um terceiro nível (shell dentro de shell dentro de shell), a variável terá o valor 3, e assim por diante.


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)

3. Re: Terminar sessao de user quando termina script [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 12/08/2019 - 22:33h

Mande o seu script aqui pra analisarmos...

--
http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


4. Re: Terminar sessao de user quando termina script

Paulo
paulo1205

(usa Ubuntu)

Enviado em 13/08/2019 - 13:45h

Mais importante até do que ver o script, é ver como ele está sendo chamado.

A melhor maneira de encerrar uma sessão automaticamente ao final da execução de um programa é chamar tal programa através do comando exec (por exemplo: executando “exec /caminho/do/script” em lugar de simplesmente “/caminho/do/script”).

Se você já estiver usando exec, e mesmo assim não estiver encerrando a execução, pode haver diversos truques com os comandos kill e killall. O mais radical seria um “kill -9 -1” ao final do script, mas isso pode ser catastrófico, dependendo do contexto (especialmente se estiver com permissões de root ou executando sob o sudo).


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


5. Re: Terminar sessao de user quando termina script

Mac
Skylen

(usa Debian)

Enviado em 25/08/2019 - 18:21h

Boa noite,
Não sei se é o que precisa, mas pode tentar deslogar pela session... Ou seja, meu caso que uso o xfce, o camando é 'xfce4-session-logout', ou pode usar o comando logout "nome do usuário"
Qual interface gráfica está usando?


6. Re: Terminar sessao de user quando termina script [RESOLVIDO]

daniel
danueli

(usa Ubuntu)

Enviado em 26/08/2019 - 09:10h

o script é basico.
como root:
$ ./script.sh
#!/bin/bash
echo "Engano!?! azar" && sleep 2
exit 0


Se o login foi feito por putty e pessoa executar esse ficheiro manda-o o fora.

O ambiente é server, nao GUI apenas CLI.


7. Re: Terminar sessao de user quando termina script [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 27/08/2019 - 11:09h

danueli escreveu:

o script é basico.
como root:
$ ./script.sh


Em lugar de chamar o script com “./script”, chame-o com “exec ./script” out com “. ./script”. Essa é a forma mais limpa de fazer.

Se você estiver mais interessado no efeito, e menos na “limpeza” da solução, pode tentar o seguinte código dentro do script.
if (( SHLVL > 1 )); then
kill -HUP $PPID
fi



... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)


8. Re: Terminar sessao de user quando termina script [RESOLVIDO]

daniel
danueli

(usa Ubuntu)

Enviado em 28/08/2019 - 07:55h

Antes de mais Obrigado pelas soluções

paulo1205 escreveu:
if (( SHLVL > 1 )); then
kill -HUP $PPID
fi



SHLVL pesquisei por essa "var" nao percebi o que faz ela antes de executar gostaria de compreender.

Saudaçoes


9. Re: Terminar sessao de user quando termina script [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 28/08/2019 - 08:37h

Ao invés de abrir uma nova sessão do ssh, vc pode passar um parâmetro para chamar um comando/script. Por exemplo:
ssh user@server /caminho/do/script 


Executando no terminal, ao finalizar o script ele fecha a conexão, finalizando a sessão ssh e a sessão de usuário do server.

Não sei como fazer isso no Putty, mas veja se tem em alguma janela uma opção para passar parâmetros, ou algo do tipo.

ps: lembrando que pra funcionar, vc precisa usar o modo de autenticação via chave pública no ssh, ou passar a senha do server pela linha de comando (menos seguro e não recomendado).






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts