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

Langage PHP Discussion :

Gérer crontab ROOT via PHP


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Juin 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Juin 2018
    Messages : 26
    Points : 5
    Points
    5
    Par défaut Gérer crontab ROOT via PHP
    Bonjour,

    Après avoir épluché de nombreux forums, et par manque de connaissance pour pouvoir creuser plus loin, je sollicite votre aide.

    J'ai mis en place des tâches cron via la commande crontab -e CTRL+X Y + Enter. Les crons sont alors bien prises en compte. A noter que je suis en root, le fichier modifié est donc /var/spool/cron/crontabs/root.

    Et en utilisant PHP, mes modifications ne sont pas prises en compte, comme si je devais impérativement passer par crontab -e.

    J'ai regardé le topic suivant : https://stackoverflow.com/questions/...e-crontab-jobs mais même la première commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    shell_exec('crontab -l')
    ne fonctionne pas pour moi, car cela me renvoie la crontab de "www-data".

    Du coup, est-ce qu'il existe une astuce pour en php modifier / sauvegarder crontab root en PHP ? Ou sinon est-ce que je peux faire cela sur le fichier "www-data" et activer celui là sur mon serveur plutôt que le root ?

    Merci pour votre aide

    Marie \m/

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    si l'utilisateur "www-data" a besoin d'accéder à une commande en tant que "root", vous pouvez passer par la commande "sudo"
    regardez par exemple cette page pour la configuration :
    https://doc.ubuntu-fr.org/sudoers

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Juin 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Juin 2018
    Messages : 26
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Je n'ai pas créé d'utilisateur.
    J'ai créé un "LAMP" sur le serveur, afin de pouvoir créer des pages web dans mon www. Depuis ces pages, je souhaiterais que du code php enclenché via le navigateur ajoute un cron. Or si depuis mon navigateur j'affiche les cron, il m'affiche les cron du "www-data". Or il n'y a que les cron lancées sur "root" qui fonctionnent.

    Marie

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    vous n'avez pas besoin de les créer, ce sont des utilisateurs systèmes crées à l'installation de linux.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Juin 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Juin 2018
    Messages : 26
    Points : 5
    Points
    5
    Par défaut
    Bonjour,
    Malheureusement l'article ne m'aide pas beaucoup, car j'avais déjà essayé des commandes de type shell_exec('sudo crontab -l') et ça m'affiche tout de même le fichier de cron qui ne fonctionne "www-data".

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 434
    Points : 43 065
    Points
    43 065
    Par défaut
    Exécuter qq chose en root depuis PHP : A bannir, faille de sécurité en perspective.

    Qu'as tu besoin de mettre en cron ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Juin 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Juin 2018
    Messages : 26
    Points : 5
    Points
    5
    Par défaut
    Je m'attendais à ce genre de réponse, déjà vue dans plusieurs forums.
    C'est un serveur perso, je m'en sers pour apprendre, tester, s'il est piraté, ca m'est égal.
    J'ai fait un outil via une interface web, et je dois via cet outil pouvoir lancer des tâches régulières. Par exemple, gérer l'envoi de mails tous les jours quand on a renseigné son mail dans un formulaire.

  8. #8
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 434
    Points : 43 065
    Points
    43 065
    Par défaut
    Autant apprendre les bonnes pratiques dès le départ.

    D'autant plus qu'on a pas besoin d'être root pour envoyer des mails.
    Ton cron appeleras simplement le script PHP chargé de l'envoi du/des mail(s).
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Juin 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Juin 2018
    Messages : 26
    Points : 5
    Points
    5
    Par défaut
    Hello,

    Mon cron doit simplement lancer un script, il ne s'agit pas d'email. Peu importe le besoin, je souhaite juste savoir comment faire...

  10. #10
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    montrez-nous le code que vous avez essayé pour ajouter une ligne dans un crontab.

  11. #11
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 434
    Points : 43 065
    Points
    43 065
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    * * * * * php /[chemin du script]/un_scrit_execute_chaque_minute.php
    Remplacer les astérisques par les bon,nes valeurs de fréquence d’exécution de ton script.
    Attention, en ligne de commande, tu n'auras pas d’interprétation html.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  12. #12
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Juin 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Juin 2018
    Messages : 26
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    la ligne d'exemple ne m'aide pas, je sais faire des lignes de cron.
    Ce que je veux, c'et la faire via PHP...

    Voici ce que j'ai dans mes logs :
    Jun 8 09:10:01 vpsxxx CRON[29978]: (www-data) CMD (NEW_CRON)
    Jun 8 09:10:01 vpsxxx CRON[29979]: (www-data) CMD (NEW_CRON)
    Jun 8 09:10:01 vpsxxx CRON[29980]: (www-data) CMD (NEW_CRON)
    Jun 8 09:10:01 vpsxxx CRON[29981]: (www-data) CMD (NEW_CRON)
    Jun 8 09:10:01 vpsxxx CRON[29983]: (www-data) CMD (NEW_CRON)
    Jun 8 09:10:01 vpsxxx CRON[29984]: (www-data) CMD (mycommand)
    Jun 8 09:10:01 vpsxxx CRON[29985]: (www-data) CMD (NEW_CRON)
    Jun 8 09:10:01 vpsxxx CRON[29987]: (www-data) CMD (curl -s http://localhost/cron/test1.php)
    Jun 8 09:10:01 vpsxxx CRON[29994]: (www-data) CMD (/usr/bin/php -f /var/www/***mail_envoye.php)

    J'ai bien réussi à ajouter des lignes de test dans mes cron, mais elles ne s'exécutent pas.
    Elles ne s'exécutent que si je passe par crontab -e, et ça édite directement le fichier de cron ROOT.

    J'ai testé ce code trouvé sur le forum stackoverflow

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function append_cronjob($command){
     
        if(is_string($command)&&!empty($command)&&cronjob_exists($command)===FALSE){
     
            //add job to crontab
            exec('echo -e "`crontab -l`\n'.$command.'" | crontab -', $output);
     
     
        }
     
        return $output;
    }

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Juin 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Juin 2018
    Messages : 26
    Points : 5
    Points
    5
    Par défaut
    Et de la même manière, si j'édite en PHP /var/spool/cron/crontabs/root : celà ne m'exécute pas les cron, il faut que je passe via crontab -e pour éditer / valider les modifications.
    Les tutos suivis sur internet me font modifier /var/spool/cron/crontabs/www-data qui ne marche pas

  14. #14
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 434
    Points : 43 065
    Points
    43 065
    Par défaut
    Essayes crontab -u www-data
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  15. #15
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Juin 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Juin 2018
    Messages : 26
    Points : 5
    Points
    5
    Par défaut
    @Chrtophe : pas dans le shell par contre, je suis en php, donc via exec() ?

  16. #16
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    Citation Envoyé par metalups Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            //add job to crontab
            exec('echo -e "`crontab -l`\n'.$command.'" | crontab -', $output);
    j'ai l'impression qu'on s'approche avec cette commande mais il se passe quelque chose que je ne comprends pas.

    j'ai testé cette commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo -e "`crontab -l`\n# test ligne commentaire" | crontab -
    en ligne de commande, cette ligne rajoute bien la ligne de commentaire.
    par contre, lancée avec "exec" il ne se passe rien et il n'y pas de message d'erreur en retour.

    si quelqu'un a une idée sur ce comportement, ça pourrait faire avancer le shlimilbli... machin.

  17. #17
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 434
    Points : 43 065
    Points
    43 065
    Par défaut
    Le programme crontab va lancer l’éditeur de texte par défaut du système (vi ou nano par exemple). Comme tu passes par une commande exec sans console, cela pose problème. voici une autre méthode :

    avec exec, appelles la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    crontab -l >fichier_temporaire.txt
    Tu ajoutes ton entrée en fin de ce fichier.
    Puis tu appeles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    crontab fichier_temporaire
    Restera à supprimer le fichier temporaire.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  18. #18
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Juin 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Juin 2018
    Messages : 26
    Points : 5
    Points
    5
    Par défaut
    Merci @chrtophe pour cette approche.
    Ma question : quand je vais supprimer le fichier, cela va supprimer ma cron ?

    Mon besoin, cela va peut être aider :
    Je souhaite monitorer des URL (par sites).
    A chaque fois que j'ajoute un site via mon back office, cela va créer les tables, et une tâche CRON qui va curler plusieurs fois par heure les URL monitorées, pour renvoyer des erreurs (mail, insertion des erreurs en base...).
    La CRON sert donc à ça : curler, envoyer le mai d'alerte etc

  19. #19
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 434
    Points : 43 065
    Points
    43 065
    Par défaut
    quand je vais supprimer le fichier, cela va supprimer ma cron ?
    Si tu parles du fichier temporaire, non.

    crontab est un garde-fou permettant de modifier le fichier des tache cron de façon sécurisé. (contrôle de syntaxe). C'est une mauvaise pratique que de modifier directement les fichiers dans /var/spool (même si ça reste faisable si tu maitrises), et encore plus via une commande exec.

    Par contre, pour nettoyer ta crontab, (ex: suppression d’éléments obsolètes), ça demandera un peu de boulot.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  20. #20
    Futur Membre du Club
    Femme Profil pro
    Chargé de référencement
    Inscrit en
    Juin 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Juin 2018
    Messages : 26
    Points : 5
    Points
    5
    Par défaut
    Eh oui, le but c'est que je puisse facilement ajouter / supprimer des lignes.
    Je ne comprends pas que ce soit aussi simple de le faire via crontab -e, et si difficile via du PHP.
    Il y en a beaucoup qui doivent le faire pour tout ce qui est outils en ligne.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [AC-2003] Gérer une BDD access via PHP
    Par Domi974 dans le forum Access
    Réponses: 1
    Dernier message: 31/05/2011, 14h02
  2. Gérer les accès à la BD : contrôle via php
    Par amarcil dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 15/04/2008, 21h12
  3. Réponses: 2
    Dernier message: 27/05/2004, 00h40
  4. [ODBC][WINDOWS] gérer une base via ODBC
    Par narmataru dans le forum Windows
    Réponses: 2
    Dernier message: 19/12/2003, 13h36
  5. Transformation xml + xsl -> HTML via PHP
    Par petit-ourson dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/10/2003, 22h42

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