Résolu Prendre en compte le Prompt dans une commande Bash (linux)

Spixz

This Is Us
Premium
Inscription
11 Décembre 2011
Messages
3 197
Réactions
847
Points
20 453
Bonsoir tous le monde, je voudrai exécuter une commande bash sur un serveur linux depuis PHP. Je voudrai que cette commande s'exécute à un certains temps. Donc j'utilise
Code:
at XX:XX && ma_commande
Le problème c'est que at contient un prompt (ce qui requiert une saisie manuelle).
ea49be0f61ea4a2cb60938b1d3eb882f.png

Le && ne fonctionne donc pas. Je vais essayer avec un script mais je ne pense pas que ça marchera.
Avez-vous une idée ?
Merci
 

Rivals

Ancien staff
Inscription
27 Août 2016
Messages
1 706
Réactions
896
Points
13 104
je voudrai exécuter une commande bash sur un serveur linux depuis PHP
Tu peux utiliser 2 fonctions qui sont sleep() et shell_exec().




Ainsi tu attends X secondes avec la fonction sleep() puis tu exécutes ta commande bash avec shell_exec() :p

Je l'aurais tenté comme ça personnellement ;)
 

Spixz

This Is Us
Premium
Inscription
11 Décembre 2011
Messages
3 197
Réactions
847
Points
20 453
Tu peux utiliser 2 fonctions qui sont sleep() et shell_exec().




Ainsi tu attends X secondes avec la fonction sleep() puis tu exécutes ta commande bash avec shell_exec() :p

Je l'aurais tenté comme ça personnellement ;)
Merci pour ta réponse. A quoi ça va me servir d'utiliser la fonction sleep() ?
 

Rivals

Ancien staff
Inscription
27 Août 2016
Messages
1 706
Réactions
896
Points
13 104
Je vais essayer de l'utiliser entre les 2 commandes mais je doute que ça marche. Mon problème c'est que je n'arrive pas à "rentrer" dans le prompt pour y taper la suite de ma commande.
Tu te mélanges les pinceaux alors, car dans ce que tu demandes tu passes par du PHP pour exécuter un bash ;)
 

Spixz

This Is Us
Premium
Inscription
11 Décembre 2011
Messages
3 197
Réactions
847
Points
20 453
Effectivement je me suis mal exprimé. Mettons PHP de côté.
Mon objectif et de pouvoir écrire une commande dans mon terminal qui s'exécutera à un moment précis. On va dire que c'est la commande "ls".
Je tape donc :
Code:
at 23:45
pour pouvoir rentrer une commande qui s'exécutera à 23:45.
https://reality-gaming.fr/proxy.php?image=http%3A%2F%2Fimage.prntscr.com%2Fimage%2Fea49be0f61ea4a2cb60938b1d3eb882f.png&hash=1dc3e46259059cc83ee0f65573a0c357
J'obtiens un prompt qui requiert donc une saisie de la part de l'utilisateur.
Après le at je tape ma commande "ls" et je fais CTRL+D pour fermer la saisie et valider la "programmation" de ma commande.
Maintenant ma commande s'exécutera à 23:45.
Ca c'est le fonctionnent de la commande at.

Maintenant pour pouvoir intégrer cette commande à shell_exec() je voudrai pouvoir l'écrire en une ligne.
Donc je fais :
Code:
at 23:45 && ls
Ce qui ne marche évidement pas car la commande "at 23:45" requiert une saisie utilisateur (et se sont 2 commandes distinctes). Une fois cette saisie faite ma deuxième commande "ls" sera exécutée.
C'est pour ça que je me demandais si il n'y avait pas la possibilité d'écrire dans un prompt via une commande comme ceci par exemple pour qu'un serveur puisse l'exécuté sans intervention humaine et que celle-ci tienne dans en une ligne pour qu'elle soit envoyé par shell_exec():
Code:
[CODE]at 23:45 prompt= ls
[/CODE]

J'ai essayé d'expliquer du mieux que j'ai pu. Désolé si je ne suis pas encore très claire.
 

Spixz

This Is Us
Premium
Inscription
11 Décembre 2011
Messages
3 197
Réactions
847
Points
20 453
J'ai enfin trouvé la réponse que je poste car elle pourrai vous être utile.
Je me suis inspiré sur ce site :


.
Ce mécanisme permet d'enchaîner l'exécution de plusieurs commandes, en branchant la sortie d'une commande sur l'entrée de la suivante, à l'aide du symbole '|' .

Du coup ça me donne par exemple :
Code:
echo "mkdir test1 && mkdir test2" | at 00:52
Du coup l'entrée de mon prompt devient "mkdir test1 && mkdir test2".

Merci beaucoup pour votre aide.
 
Haut