"injecter" une commande dans screen

"injecter" une commande dans screen - Divers - Linux et OS Alternatifs

Marsh Posté le 11-11-2007 à 08:44:38    

Salut à tous.
 
J'ai besoin de passer une commande dans un screen détaché. En lisant le man, je vois ceci :
 
    -X Send the specified command to a running screen session. You can use the -d or -r option to tell screen to look only for attached or detached
    screen sessions. Note that this command doesn't work if the session is password protected.

 
 
 
Alors je me lance :

Code :
  1. screen -dmS ma_session


 
puis
 

Code :
  1. screen -S ma_session -X ma commande


ou

Code :
  1. screen -S ma_session -X "ma commande"


 
Mais lorsque je rattache la session concernée, la commande n'a jamais été lancée.
 
Quelqu'un pourrait-il m'aiguiller ?
 
Merci.

Reply

Marsh Posté le 11-11-2007 à 08:44:38   

Reply

Marsh Posté le 11-11-2007 à 17:45:56    

C'est pour envoyer des commandes screen (crée un buffer, renommer un autre buffer), et non pas pour exécuter des commandes shell.


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 04-03-2008 à 10:15:49    

bonjour,
personnellement j'utilise la commande

Code :
  1. screen -S tunnelssh -X exec ma commande


seulement si je n'ai pas ataché au moins une fois la session screen aprés sa création la commande n'est pas exécutée...
as tu trouvé un solution toi?


---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 04-03-2008 à 22:24:09    

tu n'as pas compris...
il suffit de faire screen -S bla ma_commande


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 04-03-2008 à 22:57:44    

C'est quoi l'intérêt de la chose ?
Il y a toujours moyen de bidouiller quelque chose qui fait ça:

Code :
  1. mknod $HOME/.pipe p
  2. chmod 700 $HOME/.pipe


 
Dans le screen:

Code :
  1. while :; do $(cat $HOME/.pipe); done


 
Ensuite tu peux donner des commandes qui seront exécuter dans ton screen:

Code :
  1. echo ls > $HOME/.pipe

Message cité 2 fois
Message édité par arsunik le 04-03-2008 à 22:58:00

---------------
[:arsunik]  Les tournois de badminton
Reply

Marsh Posté le 05-03-2008 à 00:03:18    

[:vomi]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 05-03-2008 à 00:11:01    


 :whistle:


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 05-03-2008 à 07:47:19    

arsunik a écrit :

C'est quoi l'intérêt de la chose ?
Il y a toujours moyen de bidouiller quelque chose qui fait ça:

Code :
  1. mknod $HOME/.pipe p
  2. chmod 700 $HOME/.pipe


 
Dans le screen:

Code :
  1. while :; do $(cat $HOME/.pipe); done


 
Ensuite tu peux donner des commandes qui seront exécuter dans ton screen:

Code :
  1. echo ls > $HOME/.pipe



C'est vrai, c'est tellement plus simple [:rofl]


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 05-03-2008 à 08:48:39    

Je savais que ça vous plairait  :D  


---------------
[:arsunik]  Les tournois de badminton
Reply

Marsh Posté le 05-03-2008 à 08:57:45    

[:cerveau dawa psycho]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 05-03-2008 à 08:57:45   

Reply

Marsh Posté le 05-03-2008 à 15:28:17    

black_lord a écrit :

tu n'as pas compris...
il suffit de faire screen -S bla ma_commande


 
Enfet cette commande lance effectivement un ma_commande dans le screen bla mais ne rend pas la main à l'utilisateur automatiquement, sauf à la fin de l'exécution de ma_commande,
pour ce que je veux en faire cela ne me convient pas, moi je veux lancer une commande qui en gros tourne en boucle et continuer l'exécution du script.
 
j'ai pas tout compris à la solution de ArSuniK mais je vais quand même tester ça ;)


---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 05-03-2008 à 15:43:40    

arsunik a écrit :

C'est quoi l'intérêt de la chose ?
Il y a toujours moyen de bidouiller quelque chose qui fait ça:

Code :
  1. mknod $HOME/.pipe p
  2. chmod 700 $HOME/.pipe


 
Dans le screen:

Code :
  1. while :; do $(cat $HOME/.pipe); done


 
Ensuite tu peux donner des commandes qui seront exécuter dans ton screen:

Code :
  1. echo ls > $HOME/.pipe



 

dams78 a écrit :


 
j'ai pas tout compris à la solution de ArSuniK mais je vais quand même tester ça ;)


 
 
En gros :
1. créer un tuyau hors de screen
2. dire à screen d'écouter le tuyau durant un temps infini (while : se lit while true)
3. hors de screen, balancer des trucs dans le tuyau
 :o


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 05-03-2008 à 18:46:21    

enfet en essayant de l'adapter, cette solution reviens au même,
aprés la création d'une screen je n'arrive pas à lui donner une commande en paramêtre (ici la boucle infinie) sans être obligé d'atacher au moins une fois et donc manuellement la fameuse screen.


---------------
dam's (debianer), ma galerie Flickr
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed