Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 27-04-2013 12:23:38

Jiraiya43
Membre
Inscription : 27-04-2013

[BASH] Screen via d'autres users

J'ai un script (en root) qui détecte une anomalie et qui la corrige mais j'aimerai que se script exécute une commande dans un screen de l'user1

J'ai accès en root au screen de user1 grace à se tuto : http://ftp.traduc.org/doc-vf/gazette-li ... 168-C.html

Mais maintenant mon problème n'est pas résolu je n'arrive pas à exécuter de commande dans le screen sans y rentrer.

En root quand je tape : screen -x user1/ je rentre bien dans mon screen

Mais j'aimerai avoir une commande qui ne rentre pas dedans qui exécute juste des commandes comme celle-ci mais qui fonctionne à partir d'un autre user :

screen -S screenname -X -p0 eval "stuff 'commande'^m"

Cordialement,

Hors ligne

#2 27-04-2013 12:43:58

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

Re : [BASH] Screen via d'autres users

Bonjour Jiraiya43 et bienvenue sur df.

wink

"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

#3 27-04-2013 13:02:50

Jiraiya43
Membre
Inscription : 27-04-2013

Re : [BASH] Screen via d'autres users

Merci c'est sympa smile
Je rajoute que si c'est chiant ou dur à faire j'accepte d'autre méthode.
Genre mon script détecte une anomalie il lance un autre script mais il faut que celui-ci soit bien lancer en user1 pour effecteur des commandes dans le screen

Hors ligne

#4 27-04-2013 16:37:22

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : [BASH] Screen via d'autres users

Ça n'est jamais évident d'utiliser screen en multi-utilisateur. Il y a souvent des conflits de droits sur le terminal (/dev/*/pty). Tmux s'en sort bien plus facilement.

Perso, j'ai un petit script pour lancer tmux à chaque ouverture de session s'il n'est pas lancé. Il est très facile d'adapter le script pour faire lancer le tmux par un autre utilisateur.

tmux has-session -t NomDeLaSession || tmux -f .config/tmux/tmux_root.start start-server



Si tu rajoutes ça dans un

su user1 -c "tmux has-session -t NomDeLaSession || tmux -f .config/tmux/tmux.start start-server"

ça devrait le faire. Bien sûr, cela fonctionne avec un fichier tmux.start :

new  -d -sNomDeLaSession -nplop
neww -d -nmixer 'alsamixer'
neww -d
select-window -t 1



Ici, le script lance un "tmux" avec deux "fenêtres", un "alsamixer" dans la première, et juste un shell dans la seconde fenêtre. La quatrième ligne permet de choisir quelle fenêtre afficher par défaut.


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#5 27-04-2013 16:38:59

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : [BASH] Screen via d'autres users

Mhh, je vois que je n'ai pas vraiment répondu à ta question. Au lieu de créer un nouveau screen, tu veux en rattacher un et lancer une commande. Ça doit se faire aussi de manière plus flexible avec tmux qu'avec screen... Mais je ne maîtrise pas assez pr te dire comment faire.

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#6 27-04-2013 16:54:42

Jiraiya43
Membre
Inscription : 27-04-2013

Re : [BASH] Screen via d'autres users

Sinon j'ai peut être beaucoup plus simple mais je n'y arrive toujours pas..

J'ai un screen nommé ''Screen1'' qui tourne en utilisateur ''root''. J'aimerai que ''Screen1'' fasse exécuter un Script à ''minecraft'', ce script consiste à envoyer une commande dans le ''Screen2'' dont ''minecraft'' est le propriétaire. Pour le moment la seule façon que je vois c'est ça :

su minecraft
cd
./Info.sh

Mais quand je mets ça dans un script ça ne marche plus, et quand j'ajoute l'option ''su -c'' ça me lance le script en root car je reçois le message :

"No screen found"

Mais je viens de me rendre compte que chaque matin mon screen se coupe puis se relance alors le multiuser s'enlève à chaque fois, donc cette méthode ne va pas hmm

Hors ligne

#7 28-04-2013 14:07:11

Jiraiya43
Membre
Inscription : 27-04-2013

Re : [BASH] Screen via d'autres users

Pas d'idée..?

Hors ligne

#8 28-04-2013 15:24:02

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : [BASH] Screen via d'autres users

Ta commande a visiblement besoin d'une sortie graphique pour fonctionner. Si tu le lances depuis un shell, alors la sortie est récupérée automatiquement depuis la variable d'environnement DISPLAY. Pour vérifier :

echo $DISPLAY



Si tu veux faire la même chose depuis un script, il faut que tu définisses cette variable toi-même.
Exemple :

export DISPLAY=:0



Attention aussi aux droits. SI la session X est lancée par l'utilisateur « user1 », l'utilisateur « user2 » n'aura par défaut pas le droit d'y afficher ses fenêtres. Voir la commande « xhost » pour changer ça.


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#9 28-04-2013 16:03:20

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

Re : [BASH] Screen via d'autres users

Ah on les voit bien là les geeks !
Pas un bonjour, pas un salut, tout à l'essentiel !

Quel exemple pour nous pauvres newbies si précautionneux des usages humanoïdes... roll

blblblbl tongue

"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

#10 28-04-2013 16:04:45

Jiraiya43
Membre
Inscription : 27-04-2013

Re : [BASH] Screen via d'autres users

Mdr Smolski big_smile
Je précise que j'ai pas tout compris hein moi non plus tongue

Dernière modification par Jiraiya43 (28-04-2013 16:09:03)

Hors ligne

#11 28-04-2013 16:33:02

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : [BASH] Screen via d'autres users

Bonjour smolski smile

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#12 28-04-2013 16:37:24

smolski
administrateur quasi...modo
Lieu : AIN
Distrib. : 8 (jessie) 64 bits + backports
Noyau : 4.6.0-0.bpo.1-amd64
(G)UI : gnome 3.14.1
Inscription : 21-10-2008

Re : [BASH] Screen via d'autres users

Salut matelot !
Ah keu leu temps est bô
et que la mer est verte...
Laisse la fenêtre ouverte !

Escale - Chanson de marin...

Dernière modification par smolski (01-05-2013 18:29:26)


"Définition d'eric besson : S'il fallait en chier des tonnes pour devenir ministre, il aurait 2 trous du cul." - JP Douillon
"L'utopie ne signifie pas l'irréalisable, mais l'irréalisée." - T Monod (source :  La zone de Siné)
"Je peux rire de tout mais pas avec n'importe qui." - P Desproges
"saque eud dun" (patois chtimi : fonce dedans)

Hors ligne

#13 28-04-2013 20:51:31

Jiraiya43
Membre
Inscription : 27-04-2013

Re : [BASH] Screen via d'autres users

captnfab j'ai pas bien compris, je suis pas non plus expert en Debian, j'ai pas besoin de l'affichage graphique car avec cette commande avec le propriétaire du screen ça fonctionne : screen -S screenname -X -p0 eval "stuff 'commande'^m"

Je t'explique mieux, j'ai un script qui détecte si le réseau est flood, si oui le script ajoute dans iptables l'ip qui flood, et j'aimerai que ça éxécute aussi une commande dans le screen dont le propriétaire est l'user : minecraft

Hors ligne

#14 01-05-2013 18:19:18

Jiraiya43
Membre
Inscription : 27-04-2013

Re : [BASH] Screen via d'autres users

Bon mon problème est toujours pas résolu hmm

Hors ligne

#15 01-05-2013 18:23:41

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : [BASH] Screen via d'autres users

Je dis simplement que si screen a besoin de récupérer le pty pour exécuter la commande, alors il n'y arrivera pas. Et que jusqu'à présent, la seule manière propre de faire ça que j'ai trouvée, c'est d'utiliser tmux.

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#16 01-05-2013 18:38:03

Jiraiya43
Membre
Inscription : 27-04-2013

Re : [BASH] Screen via d'autres users

Je suis pas habitué à Tmux moi ^^

Hors ligne

Pied de page des forums