3 votes

Envoyer une commande au terminal d'écran d'un autre utilisateur

J'ai deux utilisateurs : user1 et user2. J'ai un bash script exécuté par l'utilisateur1, qui doit exécuter une commande sur un terminal d'écran lancé par l'utilisateur2. Des suggestions ? Merci Max

4voto

James Mertz Points 390

Vous voulez que ça ait l'air utilisateur2 a tapé la commande ?

Dans le cas de screen vous pouvez utiliser

screen -S user2/sessionname -p windowname -X stuff "~user1/somescript.sh
"

Cela permettra de taper le texte ~user1/somescript.sh (faisant référence à un fichier dans le répertoire personnel de l'utilisateur1) à une fenêtre spécifique de la session d'écran donnée et envoyer un caractère de nouvelle ligne.

(Oui, le deuxième " doit être sur une nouvelle ligne, sinon vous enverrez le texte et devrez appuyer sur retour dans la session écran. Vous pouvez également utiliser $'stuff blah\n' )

Pour ce faire, vous devez avoir un accès en écriture à user2/sessionname ; lire la page de manuel de l'écran pour la description de multiuser y acladd .


Dans le cas générique "exécuter des choses sur un autre poste de travail", vous pouvez utiliser writevt /dev/pts/X sometext ; le writevt fait partie de outils de console paquet. Si votre distribution utilise kbd à la place, prenez writevt.c . Ceci est spécifique à Linux.

Ou voulez-vous simplement que l'utilisateur 2 voie le fichier sortie ?

./somescript.sh >& /dev/pts/X

donde /dev/pts/X est le périphérique tty qui appartient à l'écran de l'utilisateur2.

Vous aurez besoin d'un accès en écriture ; celui-ci peut être donné par user2 avec chmod/setfacl, ou vous pouvez utiliser sudo .

( >& file est équivalent à > file 2>&1 qui redirige à la fois stdout et stderr vers le fichier donné).

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