IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

Exécuter la commande at via un script PHP ?


Sujet :

Administration système

  1. #1
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut Exécuter la commande at via un script PHP ?
    Bonjour,

    Tout est dans le titre.
    J'ai vu qu'il y avait pas mal de tutos pour planifier une
    crontab avec un script PHP, par contre pour at c'est le néant.
    Est ce possible ?

    Merci d'avance.

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    AMHA si tu lances une AT basique comme si tu lancais un script shell en lancant ton peucheupeu ça doit marcher non ??

    j'ai pas testé mais je vois pas pourquoi ça échouerai (sauf si c'est le script qui est moisi bien sur )

  3. #3
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut
    Tu veux dire avec la fonction exec() de peucheupeu ?
    Dans ce cas ce serait quoi la syntaxe ?
    J'ai essayé par ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec('at 21:39 touch /var/www/web/site/command/coucou.txt"');
    mais ça ne marche pas.

    Une idée ?

  4. #4
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec('at 21:39 touch /var/www/web/site/command/coucou.txt"');
    là il te manque au moins une quotation le "

    tu peux avoir besoin de \" au lieu de " mais en tout cas la méthode semble logique meme en ne connaissant pas PHP

  5. #5
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Points : 4 130
    Points
    4 130
    Par défaut
    Bonsoir,

    En consultant le man de at il semble que la saisie des commande soient interactive sauf en utilisant la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    at <heure/date> -f <fichier>
    Voici un extrait sorti du man :
    -f fichier : Lire la commande à exécuter depuis le fichier fichier et non depuis l'entrée standard.
    -t heure : Exécuter la commande à l'heure heure, donnée selon le format [[SS]AA]MMJJhhmm[.ss]

  6. #6
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut
    Merci pour ces réponses.
    Mais pour l'heure je viens de m'apercevoir que même une simple commande comme:
    ne fonctionne pas (alors qu'elle marche dans la console).
    Il doit y avoir un problème avec PHP ou les permissions d'Apache.

    Si quelqu'un a une piste...

  7. #7
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Points : 4 130
    Points
    4 130
    Par défaut
    Bonsoir,

    Chez moi j'ai ceci pour apache dans /etc/passwd :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
    Cela n'aurait pas une influence sur le fait de pouvoir exécuter une commande système ?

  8. #8
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut
    Chez moi (Ubuntu 12.04) j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    www-data:x:33:33:www-data:/var/www:/bin/sh
    mais je ne vois pas trop ce que ça veut dire.

    Est qu'il faut donner l'autorisation à www-data via sudoer du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    www-data        ALL=(ALL) NOPASSWD: /usr/bin/exec
    ?

  9. #9
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut
    Je viens de modifier les droits de www-data dans sudoers (juste pour tester) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    www-data ALL=NOPASSWD: ALL
    Et ça ne marche toujours pas.

    Une idée ?

  10. #10
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Points : 4 130
    Points
    4 130
    Par défaut
    Salut,

    As tu regarder dans ton php.ini s'il n'y avait pas un paramètre qui inhibe la commande exec ?

  11. #11
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut
    Oui, j'ai déjà épluché le php.ini mais rien ne semble empêcher la commande exec.
    Voici ce que dit le log d'erreur quand je lance le script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sh: 1:
    whoami: not found
    La commande exec serait elle absente (pas installée) ?

  12. #12
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    je dirais plutot qu'elle utilise pas le path profile et qu'il faut donc que ce soit le sript appelé qui fasse tout ... donc surcharge des différentes variables, controles d'erreurs etc... pour que la commande exec soit ok

  13. #13
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut
    En ce qui concerne exec la bonne commande est en fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo exec('/usr/bin/whoami');
    et là ça marche.

    Maintenant pour la commande at je suis toujours coincé.

    J'ai trouvé une syntaxe qui fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec('/usr/bin/at -f testjob now + 1 minutes');
    où testjob est en fait un simple ficher dans lequel est écrit la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    touch /var/www/web/monsite/coucou.txt
    L'embêtant c'est que je doit utiliser un fichier à chaque fois.
    Et apparemment ça ne marche pas avec une heure précise (ex 12:24).

    J'ai aussi essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec('/usr/bin/at -c "touch /var/www/web/monsite/coucou.txt" now + 1 minutes');
    mais ça ne fonctionne pas.

    Une idée.. ?

Discussions similaires

  1. Exécuter commande SSH dans un script PHP.
    Par Greg05000 dans le forum Linux
    Réponses: 0
    Dernier message: 14/04/2010, 01h19
  2. [Conception] Passage De Variable Avec Post Via Un Script Php + Redirection
    Par british_toons dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/09/2006, 17h57
  3. retour d'information via un script PHP
    Par jpboogie dans le forum Flash
    Réponses: 3
    Dernier message: 16/09/2006, 14h28
  4. [Système] executer un programme via un script php
    Par jeanfrancois dans le forum Langage
    Réponses: 9
    Dernier message: 08/02/2006, 16h51
  5. Ouverture d'une image via un script PHP
    Par passie dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 24/01/2006, 18h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo