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
Réponse
Trop de publicités?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é).