Permitir o uso de tela sem a capacidade de desanexar sessões

5

Eu estou querendo saber se isso é possível. Eu gostaria que os usuários pudessem iniciar a tela em alguns de nossos hosts com o propósito de multiplexar suas sessões de login de terminal. No entanto, não quero que eles possam separar a tela e deixá-la em execução em segundo plano.

A razão para isso é que a única maneira de efetuar login nessas máquinas é através de um sistema de submissão de tarefas em cluster, portanto, se uma tela for desconectada e o usuário fizer logoff, a única maneira de retornar seria se de volta ao mesmo nó nas próximas submissões de trabalhos.

    
por Kamil Kisiel 25.06.2009 / 19:49

5 respostas

1
echo autodetach off >> ~/.screenrc

Leia a manpage de tela para autodetach. Isso fará com que ele simplesmente mate tudo se a conexão estiver desativada.

Você ainda desejará as outras soluções mencionadas ...

    
por 25.06.2009 / 23:24
6

Você pode desativar o recurso de desanexar colocando

bind d

em .screenrc , que remove a tecla de atalho padrão ^ A D para desanexar. Ou talvez

bind d echo Don't detach screens, it won't work because of the cluster.

Fazer uma desativação de desanexação, incluindo os formulários de linha de comando, levaria a sua própria versão de screen e a codificação da capacidade. O que, sabe, pode ser feito, sendo um projeto de código aberto e tudo mais.

    
por 25.06.2009 / 20:00
1

Aqui está um hack que você pode colocar em um script bash e rodar a cada minuto com o cron para matar as sessões desconectadas. Não é a solução mais limpa :-P

screen -S $(screen -ls | grep Detached | awk '{ print $1}') -X kill
    
por 25.06.2009 / 21:25
0

Eles sempre serão capazes de se desconectar sem fechar o (s) terminal (is), a menos que você hackear automaticamente a tela.

    
por 25.06.2009 / 21:08
0

Como a tela de separação deixa o usuário logado, você pode adicionar ao script de login uma verificação para ver em qual servidor o usuário já está logado. Isso seria mais trabalho do que simplesmente desanexar, mas seria muito mais útil para seus usuários.

Uma ideia para o script: percorra os servidores, grep o outpot de who e, em seguida, conecte o usuário ao servidor que reporta os dados em primeiro lugar; caso contrário, registre-os como seriam agora (para manipular quando um usuário efetua logout).

    
por 26.06.2009 / 19:15

Tags