OVH Community, votre nouvel espace communautaire.

Script Cron


jeffcom
19/04/2007, 12h04
ça dépends... si tu leur envoie ta photo avec ton téléphone et que t'es mignone ça peut aller plus vite ... je déconne, j'en sais rien, c'est très variable

aude_1603
19/04/2007, 11h48
Merci
j'ai reussi

Une autre petite question savez vous combien de temps ovh va mettre pour mettre en place la tache cron ?

jeffcom
19/04/2007, 11h29
Citation Envoyé par aude_1603
Je suis entrain d'envoyer a ovh mon script pour exéccution automatique et le guide "Tâches automatisées" me dit :


Mon problème c'est que je ne trouve pas ce formulaire?? Est - il obligatoire? ou juste un mail avec les 3 informations sufit-il?

arf !
- allez là
http://ovh.com/fr/support/supportv2.cgi

- dans la colonne "vous êtes client ovh" cliques sur le bouton "continuer"

- saisissez votre nick et mot de passe

- choisissez votre domaine

- choisissez le service (dans votre cas "mut quelquechose"), type de support : "mutualisé", catégorie de support : "autre"

- une page apparait avec une liste de guides : cliquez sur "continuer"

- le fameux formulaire apparaît !

en sujet mettez quelque chose d'explicite comme "ajout de tâche cron mutualisé"

et dans votre message saisissez les informations à savoir :
- votre plan
- le chemin vers votre script depuis la racine (par exemple /home/login/dossier/script)
- les périodes d'exécution du script (par exemple : "tous les jours à 3h du matin" ou "tous les lundi à minuit" ou "un jour sur deux" ou "toutes les 2h"...)

et attendez patiemment qu'ovh ajoute votre tache au cron de votre serveur

Abogil
19/04/2007, 11h27
Citation Envoyé par aude_1603
Mon problème c'est que je ne trouve pas ce formulaire?? Est - il obligatoire? ou juste un mail avec les 3 informations sufit-il?
Juste un mail avec les 3 informations.

aude_1603
19/04/2007, 10h38
Je suis entrain d'envoyer a ovh mon script pour exéccution automatique et le guide "Tâches automatisées" me dit :
Une fois que vous êtes sûr du bon fonctionnement de votre script en mode shell, il faut envoyer un email avec le formulaire en ligne sur http://ovh.com/fr/support/supportv2.cgi avec :

votre plan d'hébergement et le nom du domaine,
le chemin complet du script par exemple: /home/login/script.cgi par exemple,
les heures et dates d'executions.
Mon problème c'est que je ne trouve pas ce formulaire?? Est - il obligatoire? ou juste un mail avec les 3 informations sufit-il?

jeffcom
17/04/2007, 17h25
Citation Envoyé par aude_1603
Ah ok!!! Merci

Donc normalement ca va marcher, jai tester en ssh mon script ne renvoi pas d'erreur, j'ai tester mon script en le lançant via une page web et l'envoi de mail fonctionne. tout est ok il faut juste que je l'envoi à ovh pour qu'il puisse faire la tache cron.

je le fais en cron par ovh car ce site n'est pas pour moi mais pour une entreprise et c'est plus simple pour eux que ovh s'en occupe

Merci pour tout ces renseignements Jeffcom ca m'a bien aidé
mais de rien, c'est fait pour ça un forum...

aude_1603
17/04/2007, 17h11
Ah ok!!! Merci

Donc normalement ca va marcher, jai tester en ssh mon script ne renvoi pas d'erreur, j'ai tester mon script en le lançant via une page web et l'envoi de mail fonctionne. tout est ok il faut juste que je l'envoi à ovh pour qu'il puisse faire la tache cron.

je le fais en cron par ovh car ce site n'est pas pour moi mais pour une entreprise et c'est plus simple pour eux que ovh s'en occupe

Merci pour tout ces renseignements Jeffcom ca m'a bien aidé

jeffcom
17/04/2007, 17h03
Citation Envoyé par aude_1603
je ne peux donc pas faire un envoi de mail.

comment je pourrais contourner ce problème?? car j'ai besoin de faire un envoi de mail automatique.
tu ne peux pas faire d'envoi de mail mais seulement en lançant ton script en ssh pas en cron ou par une page php !!!!!!

envoie donc ta requête de tâche cron à ovh

ou si tu veux quelquechose de plus souple et que ta machine est toujours allumée, mets ton script php dans un dossier protégé par htaccess dans ton arborescence web et lance cette page à l'aide du planificateur de tâches.

Perso, j'ai une machine sous linux que je n'éteint jamais, je lance donc ma tâche cron ainsi pour les stats. ça me laisse une totale liberté.

aude_1603
17/04/2007, 16h57
je ne peux donc pas faire un envoi de mail.

comment je pourrais contourner ce problème?? car j'ai besoin de faire un envoi de mail automatique.

jeffcom
17/04/2007, 16h54
Citation Envoyé par aude_1603
j'ai reussi a l'executer
est ce que ssh ne bloquerait pas la fonction mail ??
Citation Envoyé par jeffcom
étape 1.bis : lancer le script par une commande bash genre
Code:
php script.php
et voir ce que ça retourne en ssh (histoire de voir s'il n'y a pas de warning ou autre, mais en gardant à l'esprit que toutes les fonctions de communication (donc mail) sont désactivées en ssh. ça te donnera une idée sur d'éventuelles erreurs de syntaxes...
Tout est là

aude_1603
17/04/2007, 16h35
j'ai reussi a l'executer
dans mon script J'envoi un mail et je supprime un enregistrement dans une table. L'enregistrement est bien supprimé mais l'envoi de mail ne se fait pas.

est ce que ssh ne bloquerait pas la fonction mail ??

jeffcom
17/04/2007, 16h19
Citation Envoyé par aude_1603
donc je me connecte en ssh avec putty et je tape :
Code:
 php script.php
bah essayes tu verras

aude_1603
17/04/2007, 16h05
donc je me connecte en ssh avec putty et je tape :
Code:
 php script.php

jeffcom
17/04/2007, 15h57
Citation Envoyé par aude_1603
Merci pour toutes ces explications
Pour étape 1.bis :
je ne peux pas lancer le script par une commande bash car je suis sous windows
et putty ? http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

tu te conenctes en ssh et tu testes !

et pour ce qui est du reste ?

aude_1603
17/04/2007, 15h27
Merci pour toutes ces explications

Pour étape 1 :
J'avais déjà tester mon script en le lançant via une page web et il marche très bien, dc je pense que ca vient pas de mon script.

Pour étape 1.bis :
je ne peux pas lancer le script par une commande bash car je suis sous windows

jeffcom
17/04/2007, 12h15
Citation Envoyé par aude_1603
Pour tester mon script j'ai utilisé le "stratagème" que jeffcom m'a donné

Code PHP:
$derniereligne=exec("/home/tonlogin/dossier_des_scripts_cron/mail",$output,$codesortie);
echo 
"
\n";
foreach (
$output as $ligne) {
     echo 
"$ligne\n";
}
echo 
"
\n"
;
echo 
"code de sortie $sortie";
?>
Mais il me semble que mon script ne s'exécute pas et ce petit stratagème me revoi un code de sortie qui est soit : 2 ou 126 ou 127
je ne sais pas à quoi cela correspond??

si quelqu'un peut me dire Merci
en "googlant" un peu on trouve http://abs.traduc.org/abs-4.2.01-fr/apd.html

2 = mauvaise utilisation de commandes intégrées, d'après la documentation de Bash
126 = la commande appelée ne peut s'exécuter
127 = commande introuvable

éléments pour trouver où ça "merdouille" :
étape 1 : vérifier si le script php s'éxécute correctement au sein d'apache en le lançant via une page web : mets ton script dans un fichier php et mets-le quelque part dans ton arborescence web. bien entendu il faut que tu fasses en sorte d'avoir le maximum de retours. par exemple, pour le script que tu proposais l'autre jour :
Code PHP:

$req1
="select MAIL from ma_table ";
$result1 mysql_query ($req1);
echo 
mysql_error();


while(
$ligne1=mysql_fetch_array($result1)) 

extract($ligne1); 

$Destinataire "xxx@xxxx.fr";
$Sujet "zzzzzzz";

$From "From:xxx@xxxx.fr\n";
$From .= "MIME-version: 1.0\n";
$From .= "Content-type: text/html; charset= iso-8859-1\n";

$Message " bonjour";
if (
mail($MAIL,$Sujet,$Message,$From)) {
echo 
"le mail a été envoyé";
} else {
echo 
"le mail n'a pas été envoyé";
}
}

?>
note le "echo mysql_error()" pour savoir si ta requête est ok, et la condition "if(mail(...))" pour savoir si la fonction mail renvoie une erreur ou pas...
(note au passage que la requête que tu proposait ne comporte pas de condition "where", et n'est dont pas valide normalement...)

étape 1.bis : lancer le script par une commande bash genre
Code:
php script.php
et voir ce que ça retourne en ssh (histoire de voir s'il n'y a pas de warning ou autre, mais en gardant à l'esprit que toutes les fonctions de communication (donc mail) sont désactivées en ssh. ça te donnera une idée sur d'éventuelles erreurs de syntaxes...

étape 3 : créer un script bash :
Code:
#!/bin/bash
php script.php
et le lancer avec le "stratagème"

tu pourrais aussi poster le script que tu utilises si tu as du mal à débugguer.

évite aussi ce genre de structure :
Code PHP:
while($ligne1=mysql_fetch_array($result1)) 

extract($ligne1); 
et préfère
Code PHP:
while(list($mail) = mysql_fetch_array($result1)) { 
ça permet d'éviter des erreurs bêtes dûes à une mauvaise casse de nom de variable.

n'hésites pas à demander si tu as un souci, c'est fait pour ça un forum...

aude_1603
17/04/2007, 09h17
Pour tester mon script j'ai utilisé le "stratagème" que jeffcom m'a donné

Code PHP:
$derniereligne=exec("/home/tonlogin/dossier_des_scripts_cron/mail",$output,$codesortie);
echo 
"
\n";

foreach (
$output as $ligne) {
     echo 
"$ligne\n";
}
echo 
"
\n"
;
echo 
"code de sortie $sortie";
?>
Mais il me semble que mon script ne s'exécute pas et ce petit stratagème me revoi un code de sortie qui est soit : 2 ou 126 ou 127
je ne sais pas à quoi cela correspond??

si quelqu'un peut me dire Merci

jeffcom
13/04/2007, 17h36
avec plaisir

aude_1603
13/04/2007, 17h29
Merci beaucoup jai reussi a le rendre executable.
Lundi je vais voir pour tester si mon script marche Merci pour toute cette aide

jeffcom
13/04/2007, 17h08
Citation Envoyé par aude_1603
Merci

Peux tu m'expliquer ce que tu entends par " changer les attributs de ton fichier pour le rendre exécutable" si j'utilise mon client ftp filezilla
Lorsque tu as la liste des fichiers, tu fais un click droit sur ton fichier, tu choisis "modifier les attributs" ou "propritétés" (ça fait des siècles que je l'ai pas utilisé) et tu coches les cases correspondantes à "exécuter"


aude_1603
13/04/2007, 16h16
Merci

Peux tu m'expliquer ce que tu entends par " changer les attributs de ton fichier pour le rendre exécutable" si j'utilise mon client ftp filezilla

jeffcom
13/04/2007, 15h48
Citation Envoyé par aude_1603
Merci jeffcom

J'ai presque tout compri!!

Pour rendre mon script exécutable je dois jsute rajouter au début du script ces 2 lignes ?


???

Merci
ou là !! pas du tout !

Code:
chmod a+x mon_script.php
c'est à saisir lors d'une connexion en ssh via ssh sous unix ou putty sous windows. une autre méthode est d'utiliser ton client FTP et de changer les attributs de ton fichier pour le rendre exécutable.

aude_1603
13/04/2007, 15h41
Merci jeffcom

J'ai presque tout compri!!

Pour rendre mon script exécutable je dois jsute rajouter au début du script ces 2 lignes ?

#!/usr/bin/php
chmod a+x mon_script.php
???

Merci

jeffcom
13/04/2007, 12h28
Citation Envoyé par aude_1603
Bonjour

j'ai bien vu tous ce qui concerne ovh mutualisé et cron mais je voudrais savoir si j'ai bien tout compri :
je veux faire une tache cron, pr automatiser un envoi de mail
j'envoi le nom de mon plan d'hébergement et le nom du domaine
les dates et heures
mon script :
Code:
  
#!/usr/bin/php
VOila mon script est ce qu'il convient ?

Merci de votre aide
Bonjour,

il ne faut pas envoyer ton script, mais le mettre quelque part, et, concernant ton script, je pense qu'il vaut mieux le mettre hors de l'arborescence web (ie: hors du dossier www) pour des raisons évidentes de sécurité.

je récapitule :
  • tu crées un fichier, appelons-le "mail" avec ton code dedans,
  • tu le place où tu veux mais hors du dossier www, mettons dans "/home/tonlogin/dossier_des_scripts_cron"
  • tu te connectes à ton serveur via ssh (pour se faire, soit tu es sous *nix (unix, linux...) et tu tapes dans une cosole "ssh tonlogin@tondomaine" soit tu es sous windows et tu utilises putty) ou avec ton client ftp...
  • tu rends ton script exécutable par la commande "chmod a+x /home/tonlogin/dossier_des_scripts_cron/mail" via ssh ou avec ton client ftp
  • tu envoies un mail à ovh via l'interface de support par mail, avec,
    • le nom de ton plan
    • ton domaine
    • le chemin vers ton script (à savoir dans cet exemple : "/home/tonlogin/dossier_des_scripts_cron/mail")
et vala

le problème c'est qu'il faut être certain de l'exécution de ton script...
le 2° problème c'est que l'accès au web est désactivé en ssh, il te faudra donc utiliser un "stratagème" pour tester ton script et être certaine qu'il fonctionne correctement. Dans ton cas tu peux utiliser un script php tel que
Code PHP:
$derniereligne=exec("/home/tonlogin/dossier_des_scripts_cron/mail",$output,$codesortie);
echo 
"
\n";
foreach (
$output as $ligne) {
     echo 
"$ligne\n";
}
echo 
"
\n"
;
echo 
"code de sortie $sortie";
?>
que tu pourras appeler depuis ton navigateur web.

ne fait la soumission de ton script que lorsque tu es certaine de son fonctionnement.


aude_1603
13/04/2007, 10h41
Bonjour

j'ai bien vu tous ce qui concerne ovh mutualisé et cron mais je voudrais savoir si j'ai bien tout compri :
je veux faire une tache cron, pr automatiser un envoi de mail
j'envoi le nom de mon plan d'hébergement et le nom du domaine
les dates et heures
mon script :
Code:
  
#!/usr/bin/php

VOila mon script est ce qu'il convient ?

Merci de votre aide

jeffcom
10/04/2007, 17h21
Citation Envoyé par jeffcom
le script lui même n'est peut être pas en cause !

wget est un programme qui va se comporter comme un navigateur et qui va sauvegarder automatiquement ce que le serveur lui renvoie dans un fichier ayant le même nom que le fichier appelé. Dans ton exemple il va créer le fichier "toto.php" dans lequel se trouvera la réponse du serveur et quelques entêtes http. si wget est appelé avec la même url plusieurs fois, il va créer des fichoers incrémentaux : "toto.php.1" puis "toto.php.2" etc... regarde donc si ces fichiers n'ont pas été créés dans le répertoire où se trouve ton script shell va ssh :
Code:
ls
et édite-les
Code:
editor toto.php
pour éditer "toto.php"

une autre piste : est-ce que ton script php est accessible depuis le web est est-ce qu'il fonctionne si tu le lances depuis ton navigateur ?
S'il fonctionne depuis ton navigateur, tu sais que ça ne viens pas du script php.
Si le script php est accessible après authentification http, il faut que tu fournisse à wget les identifiants sous la forme :
Code:
wget http://login:mot_de_passe@domaine.com/dossier/toto.php
J'avais oublié de dire qu'il faut que tu spécifie ton dossier utilisateur comme comme dossier d'exécution de ton script avec
Code:
cd /home/tonlogin
...

jeffcom
10/04/2007, 17h19
Citation Envoyé par izzyway
J'ai un PLAN90 et un 60GP, le wget ne fonctionne que sous le 60GP (et encore j'ai un doute, il faudrait que je reteste). Pour le PLAN le wget me retourne une erreur.
c'est normal si tu y accèdes en ssh : c'est désactivé ! (voir plus haut)

izzyway
10/04/2007, 17h14
J'ai un PLAN90 et un 60GP, le wget ne fonctionne que sous le 60GP (et encore j'ai un doute, il faudrait que je reteste). Pour le PLAN le wget me retourne une erreur.

jeffcom
23/03/2007, 20h15
Citation Envoyé par Vince38
Je rencontre un problème avec le script suivant: il est lancé par cron mais n'a pas correctement fonctionné (il doit envoyer un email que je n'ai pas reçu).

Code:
#!/bin/bash
wget http://monsite.com/une_page/toto.php
Y a-t-il quelque chose que j'ai raté?

Comment puis-je accéder à un compte-rendu d'exécution du script (lancé par cron)?

Des pistes???
le script lui même n'est peut être pas en cause !

wget est un programme qui va se comporter comme un navigateur et qui va sauvegarder automatiquement ce que le serveur lui renvoie dans un fichier ayant le même nom que le fichier appelé. Dans ton exemple il va créer le fichier "toto.php" dans lequel se trouvera la réponse du serveur et quelques entêtes http. si wget est appelé avec la même url plusieurs fois, il va créer des fichoers incrémentaux : "toto.php.1" puis "toto.php.2" etc... regarde donc si ces fichiers n'ont pas été créés dans le répertoire où se trouve ton script shell va ssh :
Code:
ls
et édite-les
Code:
editor toto.php
pour éditer "toto.php"

une autre piste : est-ce que ton script php est accessible depuis le web est est-ce qu'il fonctionne si tu le lances depuis ton navigateur ?
S'il fonctionne depuis ton navigateur, tu sais que ça ne viens pas du script php.
Si le script php est accessible après authentification http, il faut que tu fournisse à wget les identifiants sous la forme :
Code:
wget http://login:mot_de_passe@domaine.com/dossier/toto.php

Vince38
23/03/2007, 20h05
Je rencontre un problème avec le script suivant: il est lancé par cron mais n'a pas correctement fonctionné (il doit envoyer un email que je n'ai pas reçu).

Code:
#!/bin/bash
wget http://monsite.com/une_page/toto.php
Y a-t-il quelque chose que j'ai raté?

Comment puis-je accéder à un compte-rendu d'exécution du script (lancé par cron)?

Des pistes???

jeffcom
22/03/2007, 12h24
Citation Envoyé par Vince38
En parcourant ce thread, la réponse à la question:

m'intéresse: quelqu'un connait-il la réponse?
J'ai eu une réponse du support OVH : Les scripts lancés depuis SSH n'ont pas accès au web, mais les crons étant lancés par un autre utilisateur, ils ont accès au web.

la réponse finale est donc oui

Le problème c'est qu'il faut pouvoir tester son script pour savoir si tout est ok...

il ya plusieurs solutions :
1) faire faire le travail par un script php ou perl... le script lancé par cron ayant juste pour fonction d'exécuter le script php ou perl
2) tester le script à lancer par cron via php avec une fonction shell

pour ma part je prends l'option 1 : c'est plus souple et pour tester c'est beaucoup plus simple

Vince38
22/03/2007, 12h21
En parcourant ce thread, la réponse à la question:
Est-ce qu'un script lancé par cron a accès au web ou pas ?
m'intéresse: quelqu'un connait-il la réponse?

jeffcom
06/03/2007, 16h42
Citation Envoyé par Homer Jay
Les serveurs SSH n'ont pas d'accès sortant à internet.
okay c'est pour ça que les wget ne fonctionnent pas... well... est-ce que quelqu'un d'ovh pourrait confirmer pour le cron ? à savoir pour être clair : "Est-ce qu'un script lancé par cron a accès au web ou pas ? est-ce qu'un script php peut utiliser, par exemple, la fonction file_get_contents ou gzfile pour récupérer les logs sur le serveur de logs ?"

merci à toute personne d'ovh venant voir par ici

Homer Jay
18/11/2006, 09h31
Citation Envoyé par b00z
Je souhaite réaliser un CRON à partir d'un script php.

Ce script ouvre une page web, lit son contenu et fait divers action.
Il est d'usage de lire les archives avant de poser une question: on a déjà parlé de ça récemment.

Les serveurs SSH n'ont pas d'accès sortant à internet. C'est la cause de ton problème. Il serait intéressant de savoir si les jobs cron y ont accès, mais en tout cas tu vas devoir trouver un autre moyen de tester ton script.

Abogil
18/11/2006, 09h16
As-tu essayé avec une adresse en relatif ?

b00z
16/11/2006, 14h07
Bonjour,

Je souhaite réaliser un CRON à partir d'un script php.

Ce script ouvre une page web, lit son contenu et fait divers action.

Quand je lance le php via une URL, celui ci fonctionne bien.

En revanche quand je lance, le même script en ligne de commande par ssh :

commande : php script.php

Au moment de l'ouverture de l'URL j'ai l'erreur suivante :

Warning: fopen(http://www.oceanvirtuel.com/vt4/pann...mp;bateau=toto) [function.fopen]: failed to open stream: HTTP wrapper does not support writeable connections. in /home.10.4/mysticte/www/Scripts/purge_bateau1.php on line 17


si quelqu'un peut m'aider je suis preneur de conseil

Matthieu