Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/10/2010, à 16:13

Blackh4wk

[Résolu][Aide] Instructions dans une commande Screen

Bonjour à tous,

Je poste ici afin de trouver une solution à une de mes applications courantes.
En effet, je suis fan de scripts .sh que j'exécute en crontab tout les X jours afin de réaliser des maintenances automatiques normalement faites par intervention Humaine.

Je possède plusieurs screen sur lesquels des consoles sont actives (serveurs divers, applications spéciales etc.).
Et j'ai pour objectif d'envoyer des instructions à ses screens.

Exemple:

screen -d -R 21421 -X stuff "next"

Cette commande envois donc le mot "next" dans la console qui ce trouve dans un de mes screens.
Le problème est que pour que cette commande "next" soit exécutée dans la console, il faudrait que ma commande screen soit capable de simuler l'appuis sur la touche "Enter" (Comme pour envoyer l'exécution en fait.)
J'arrive donc à l'heure actuelle à écrire dans un screen mais pas à simuler l'appuis sur Entrer, afin que cela puisse être automatisé dans le .sh pour l'exécution crontab.

Voici donc ma demande:
Une personne est-elle capable de me donner la solution pour que mon texte envoyé dans une console sous un screen puisse être exécuté par simulation d'une touche entrée ?

Et enfin, accessoirement, que ce screen soit quitté par mon script afin que ce dernier ne tourne pas en boucle.
(A moins que le simple done soit suffisant ?)

Merci beaucoup d'avance pour vos réponses ! smile

Dernière modification par Blackh4wk (Le 20/10/2010, à 19:07)

Hors ligne

#2 Le 18/10/2010, à 17:19

browny

Re : [Résolu][Aide] Instructions dans une commande Screen

Salut à toi,

Il me semble qu'il faut rajouter \ ; (un slash et un point-virgule), mais je ne suis plus sûr du coup (j'ai pas mon nux pour tester) :

screen -d -R 21421 -X stuff "next \;"

C'est pour faire quoi en fait (sans indiscrétions) ?

Dernière modification par browny (Le 18/10/2010, à 17:21)

Hors ligne

#3 Le 18/10/2010, à 17:53

Blackh4wk

Re : [Résolu][Aide] Instructions dans une commande Screen

Bonsoir,

Merci pour cette première réponse.
J'ai un programme communautaire et je cherche à envoyer un message de maintenance automatique (pour prévenir d'éventuelles latences dans les discussions et échanges.).
Et d'autres qui via certaines commandes changent certaines configs.

J'ai essayer cette solution, mais malheureusement, elle ne marche pas.
Elle rajoute carrément le \; à la suite du texte.

J'ai donc essayer toutes les variantes:

screen -d -R 21421 -X stuff "next" \;
screen -d -R 21421 -X stuff '"next" \;'
screen -d -R 21421 -X  \;

Rien n'y fait, ca ne simule pas l'appui "ENTER".

Dernière modification par Blackh4wk (Le 18/10/2010, à 17:54)

Hors ligne

#4 Le 19/10/2010, à 15:03

Blackh4wk

Re : [Résolu][Aide] Instructions dans une commande Screen

Bonjour,

Je recherche toujours du soutiens s'il vous plait smile

Ma demande est urgente, bien que j'attends les aides avec patiences.
Je remercie d'avance les personnes qui me partageront de leur temps.

Hors ligne

#5 Le 20/10/2010, à 14:55

FRUiT

Re : [Résolu][Aide] Instructions dans une commande Screen

screen -d -R 21421 -X stuff 'next
'

Ou bien, en rajoutant -console en lançant screen,

screen -d -R 21421 -X -p0 eval "stuff 'next'^m" 

Dernière modification par FRUiT (Le 20/10/2010, à 14:55)


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#6 Le 20/10/2010, à 19:06

Blackh4wk

Re : [Résolu][Aide] Instructions dans une commande Screen

Bonjour à vous,

Apres plusieurs jours de recherches, FRUiT m'apporte la solution parfaite !
Je te remercie beaucoup et remercie aussi Browny pour son aide.

Je n'ai plus qu'a passer à la suite de mon travail en vous souhaitant une bonne soirée !

A bientôt.

Hors ligne

#7 Le 20/10/2010, à 19:42

FRUiT

Re : [Résolu][Aide] Instructions dans une commande Screen

Blackh4wk a écrit :

Apres plusieurs jours de recherches,

Soit dit en passant juste pour ton information personnelle (ne vois là aucune espèce de reproches), je ne connais pas du tout screen, ni ce que tu veux faire. Simplement j'ai cherché sur google "screen simuler appui sur enter", cliqué le 3ème lien des réultats de recherche, j'ai trouvé en 10 secondes cette solution (du premier coup). Je pense que tu aurais pu le trouver tout aussi vite smile

Voili voila content pour toi que ça marche, à bientôt.

Dernière modification par FRUiT (Le 21/10/2010, à 13:40)


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#8 Le 20/10/2010, à 21:37

Blackh4wk

Re : [Résolu][Aide] Instructions dans une commande Screen

Bonsoir,

Hum, oui en effet, c'est indiqué à un certain niveau du sujet sur leur forum.
J'avais procéder à cette technique de recherche avec le "+" en complément (screen+enter+screen+debian).
Mais c'est mon côté anglais qui ne m'a pas permis de trouver le sujet du côté Français sad, je vais faire un cron journalier pour exécuter un .sh pour me fouetter.

Bonne soirée à vous ! smile

Hors ligne

#9 Le 13/03/2011, à 04:28

cramj

Re : [Résolu][Aide] Instructions dans une commande Screen

Bonjour/soir

j'utilise cette ligne
   

screen -rd minecraft -X -p0 eval "stuff 'list'^m"

dans le screen, apparait la liste des joueurs connectés.

Comment faire pour récupérer cette liste qui s'étale sur plusieurs lignes si au moins 1 joueur est connecté ?

Je pense que je peux le faire en surveillant les logs du jeu, mais il me serait plus facile de récupérer les infos renvoyées par le screen. et peut être plus rapide.

Merci pour vos lumières smile


config : HP Pavillon 6720ef - dual core T2370 - DDR 2Go - GeForce 8400M GS > Ubuntu 10.10

Hors ligne

#10 Le 13/03/2011, à 15:41

FRUiT

Re : [Résolu][Aide] Instructions dans une commande Screen

liste="$(screen -rd minecraft -X -p0 eval "stuff 'list'^m")"

Comme ça peut-être ?


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#11 Le 13/03/2011, à 16:35

cramj

Re : [Résolu][Aide] Instructions dans une commande Screen

FRUiT a écrit :
liste="$(screen -rd minecraft -X -p0 eval "stuff 'list'^m")"

Comme ça peut-être ?

[15:20:18]mc@mine~/minecraft_bukkit$ liste="$(screen -x minecraft -X -p0 eval "stuff 'list'^m")"; echo $liste

[15:20:25]mc@mine~/minecraft_bukkit$ 

il m'affiche une ligne vide...
Pensant qu'il y avait un conflit avec les guillemets existants, j'ai testé sans les guillemets de début et fin, mais c'est pareil

est-ce vraiment faisable ? ça vient peut-être de minecraft qui bloque quelque part ? j'en sais rien hmm
je sens que je vais être obligé de passer par un socket via un autre langage  (PHP, C...) et encore... pas certain que ça fonctionne mieux


{edit}
pour info, ce qu'affiche le screen :

>list
15:37:52 [INFO] Connected players: keleimeng
>

Dernière modification par cramj (Le 13/03/2011, à 16:40)


config : HP Pavillon 6720ef - dual core T2370 - DDR 2Go - GeForce 8400M GS > Ubuntu 10.10

Hors ligne

#12 Le 13/03/2011, à 17:11

FRUiT

Re : [Résolu][Aide] Instructions dans une commande Screen

> screen -rd minecraft -X -p0 eval "stuff 'list | tee /tmp/list.txt'^m"
> cat /tmp/list.txt

Peut-être ceci alors ?

Dernière modification par FRUiT (Le 13/03/2011, à 17:16)


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#13 Le 13/03/2011, à 21:42

cramj

Re : [Résolu][Aide] Instructions dans une commande Screen

list | tee /tmp/list.txt  est envoyé dans le screen.
j'ai donc fait plusieurs tests dont

screen -rd minecraft -X -p0 eval "stuff 'list'^m" | tee /tmp/list.txt

ceci me crée bien le ficher /tmp/list.txt, mais reste vide...

Erratum :
la liste des connectés, qu'il n'y en ait pas ou qu'ils soient plusieurs, s'affiche sur une seule ligne. mais c'est un détail qui n'a aucune importance pour le moment smile


config : HP Pavillon 6720ef - dual core T2370 - DDR 2Go - GeForce 8400M GS > Ubuntu 10.10

Hors ligne