5 votes

Autoriser l'utilisation de l'écran sans possibilité de détacher les sessions

Je me demande si c'est possible. J'aimerais que les utilisateurs puissent lancer un écran sur certains de nos hôtes dans le but de multiplexer leurs sessions de connexion de terminal. Cependant, je ne veux pas qu'ils puissent détacher l'écran et le laisser fonctionner en arrière-plan.

La raison en est que le seul moyen de se connecter à ces machines est par le biais d'un système de soumission de tâches en grappe, donc si un écran se détache et que l'utilisateur se déconnecte, le seul moyen de revenir serait s'ils se retrouvaient sur le même nœud lors de leurs prochaines soumissions de tâches.

6voto

Corin Blaikie Points 6223

Vous pouvez effectuer une désactivation 'douce' du détachement en mettant

bind d

dans .screenrc, ce qui supprime le raccourci par défaut ^A D pour détacher. Ou peut-être

bind d echo Ne détachez pas les écrans, cela ne fonctionnera pas en raison du cluster.

Désactiver complètement le détachement, y compris les formes en ligne de commande, nécessiterait de créer votre propre version de screen en modifiant la capacité. Ce qui, vous savez, peut être fait, étant donné que c'est un projet open source.

1voto

Kyle Brandt Points 81077

Voici un piratage que vous pourriez insérer dans un script bash et exécuter toutes les minutes avec cron pour tuer les sessions détachées. Pas la solution la plus propre cependant :-P

screen -S $(screen -ls | grep Detached | awk '{ print $1}') -X kill

1voto

freiheit Points 14144
echo autodetach off >> ~/.screenrc

Lisez la page de manuel de screen pour autodetach. Cela garantira simplement la suppression de tout si leur connexion est interrompue.

Vous voudrez toujours les autres solutions mentionnées...

0voto

Andrej Mitrović Points 313

Ils pourront toujours se déconnecter sans fermer leur(s) terminal(aux), sauf si vous piratez l'auto-kill dans screen bien sûr.

0voto

Derek Tomes Points 1204

Étant donné que détacher l'écran laisse l'utilisateur connecté, vous pourriez ajouter dans le script de connexion une vérification pour voir à quel serveur l'utilisateur est déjà connecté. Cela serait plus de travail que simplement désactiver le détachement, mais serait beaucoup plus utile pour vos utilisateurs.

Une idée pour le script : parcourir les serveurs, faire un grep sur la sortie de who, puis connecter l'utilisateur au serveur qui signale qu'il est connecté en premier; sinon, les connecter comme ils le seraient actuellement (pour gérer quand un utilisateur se déconnecte proprement).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X