Pages : 1
#1 Le 25/10/2013, à 01:09
- DonutMan75
Screen et shell script
Bonjour à tous,
Sur ma machine en local, j'utilise screen pour avoir un terminal accessible depuis n'importe où (notamment via ssh).
En local, j'aimerais automatiser (via cron) un script qui exécuterait régulièrement certaines commandes sur ce terminal.
Il me semble que l'option -X de screen répond à cette problématique.
Or, je n'y arrive pas... Pouvez-vous m'aider ?
Liens :
http://doc.ubuntu-fr.org/screen
http://www.gnu.org/software/screen/manual/screen.html
Terminal 1 :
$ screen -S toto
Terminal 2 :
$ screen -x toto -X "ls"
Je m'attends à voir apparaître, sur terminal 1 et terminal 2 le listing de mon répertoire courant...
Or, dans terminal 2, ça passe à la ligne sans rien indiquer... (à la rigueur ça ça n'est pas gênant).
Et dans terminal 1, je vois "-X : unknown command 'ls'" s'afficher dans un carré blanc en bas à gauche de ma fenêtre...
Comment pourrais-je m'en sortir ?
Merci d'avance
Donut
Hors ligne
#2 Le 25/10/2013, à 08:44
- tiramiseb
Re : Screen et shell script
Salut,
L'argument de "-X" ce n'est pas pour exécuter une commande dans le shell, c'est pour exécuter une commande propre à screen (je t'invite à voir là pour ces commandes : http://www.gnu.org/software/screen/manu … d-Summary).
Le problème par rapport à ton besoin, c'est qu'il n'y a pas moyen de savoir si le screen en question est en capacité d'accueillir le retour d'une commande : si vim est ouvert et que tu es en train d'éditer des fichiers, quel comportement attendrais-tu ? De plus, comment gères-tu le cas où tu as plusieurs fenêtres ouvertes dans le screen ? Comment faire pour que le potentiel message que tu essaies d'y afficher le sera sur la fenêtre que tu veux ?
Plutôt que d'exprimer un début de solution, peux-tu exprimer ton premier besoin ; autrement dit, pourquoi veux-tu afficher quelque chose dans ce screen ?
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#3 Le 25/10/2013, à 10:54
- DonutMan75
Re : Screen et shell script
Bonjour Tiramiseb,
en fait je mets en place un serveur Minecraft (je ne sais pas si tu connais ce jeu ?).
C'est un truc en java, que je lance avec la commande :
$ java -Xmx1024M -Xms1024M -jar minecraft_server.jar
Le terminal lance ensuite le serveur et j'ai la main pour lancer certaines commandes spécifiques (/say pour parler, /save-all pour forcer la sauvegarde du serveur etc...).
J'aimerais pouvoir y accéder depuis n'importe où. Comme j'ai déjà un accès ssh sur cette machine, la solution de screen me paraissait idéale. Donc ça, ça marche plutôt bien.
Maintenant, j'aimerais faire un script sh (appelé régulièrement via cron) qui enverrait la commande '/save-all' au serveur avant d'archiver le répertoire où sont stockées les données. C'est là que je bloque...
Apparemment d'après ce que tu me dis, ce n'est pas possible ?
Merci d'avance et bonne journée,
Donut
Hors ligne