Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/12/2009, à 18:14

SteFBlood

Un problème bizarre avec 'mutt' et la commande 'at'

D'abord bonjour à tous,
C'est mon premier post ici ! j'en suis tout ému.

Ensuite, je voudrai vous demander de m'éclairer sur le truc suivant :

J'ai un site http qui prépare une commande at à une heure choisie et envoie un mail avec mutt (parce que besoin d'attacher une pièce jointe).
Et évidemment le mail n'arrive pas, alors j'ai décomposé le mouvement en ligne de commande et là, ça marche, je m'explique :

- je crée un fichier .sh qui contient ma commande mutt (si je la lance à la main en root, ça passe, en user www-data, ça passe aussi)
- je crée une commande at (par shell_exec dans mon php) qui envoie le sh à l'heure choisie. Le système me répond que le job est bien chargé (par atq j'ai un retour). (si je lance à la main cet 'at', le mail part bien et je le reçois dans la boite que j'ai indiqué)

- et finalement, ce n'est que quand je laisse faire mon php de bout en bout que le mail n'arrive jamais.

J'ai fouillé dans /var/log/mail.info : pas de trace du mail. alors que les autres, lancés à la main, y sont.

--> résultat : le problème vient du at qui ne lance pas la commande mutt.

alors je me dis que je vais essayer de lui faire lancer autre chose et je modifie mon php pour qu'il m'exécute un 'touch toto' dans un répertoire à une heure précise.

Et j'obtiens mon fichier :
-rw-r--r-- 1 www-data www-data      0 2009-12-29 18:05 toto.toto

Alors, voilà, j'en viens aux questions, qui pourraient être innombrables, mais je me limite à 2 :

- Vous voyez ce qui m'arrive ?
- Y'a-t-il un endroit pour tracer les actions/résultats de la commande 'at' ?

En vous remerciant mille fois pour les mille réponses que je vais obtenir (ceci dit à partir de 1 je suis content, déjà),

Hors ligne

#2 Le 30/12/2009, à 02:09

Shrat

Re : Un problème bizarre avec 'mutt' et la commande 'at'

Tu as mutt d'installé sur le serveur? roll

Hors ligne

#3 Le 30/12/2009, à 11:22

SteFBlood

Re : Un problème bizarre avec 'mutt' et la commande 'at'

Oui mon colonel,

mutt fonctionne parfaitement, aussi bien en interface utilisateur qu'en ligne de commande, aussi bien en root qu'en utilisateur www-data (par su - www-data).

Affinons les questions :

- Quels privilèges sont associés à une commande at ? Mon "touch toto" me dit que c'est www-data qui a crée le fichier, donc je suppose qu'il n'y a pas de surprise dans le changement d'utilisateur quand at se déclenche. Cependant, mon mutt ne se lance toujours pas par ce 'at' (quand celui-ci est appelé par un shell_exec en php depuis une page web, je le rappelle).

Hors ligne

#4 Le 30/12/2009, à 12:10

Shrat

Re : Un problème bizarre avec 'mutt' et la commande 'at'

Tu peux donner ta commande exacte s'il te plaît.

Je sêche un peu là…

Hors ligne

#5 Le 30/12/2009, à 12:18

SteFBlood

Re : Un problème bizarre avec 'mutt' et la commande 'at'

J'ai pas le code sous les yeux, mais je me rappelle assez bien :

En gros :

- je crée un fichier batch.sh dans ./upload/batch.sh qui contient :

mutt <adresse> -s <sujet> -a <piece jointe> < <contenu du mail>

- je crée une ligne de commande $Cde dans mon php qui contient :

$Cde="at -f ./upload/batch.sh hh:mm MMDDYY";

- Et j'appelle la commande avec shell_exec() :

$return_value=shell_exec($Cde);

Et return_value ne contient rien d'intéressant, je m'en sers pour récupérer le numéro du 'at'...

Et je le redis : toutes ces commandes (mutt et at) faites à la mano dans un shell fonctionnent sans problème...
(et pour le test, j'ai modifié mon $Cde en $Cde="touch ./upload/toto" et ça a fonctionné... hmm )

Hors ligne

#6 Le 30/12/2009, à 12:51

Shrat

Re : Un problème bizarre avec 'mutt' et la commande 'at'

Fait plutôt

sh /chemin/absolu/vers/le/script | at -t hh:mm MMDDYY

Hors ligne

#7 Le 30/12/2009, à 15:16

SteFBlood

Re : Un problème bizarre avec 'mutt' et la commande 'at'

Même résultat avec le pipe... pas de mail envoyé.

J'ai viré la commande at et tenté d'envoyer le shell par le shell_exec(), et ça ne passe pas non plus (alors que le lancer à la main dans une console, ça marche...)

je crois que c'est donc plus un problème de shell et de commande shell_exec() en php qu'un problème ubuntu...

Le bout de code qui me pose souci :

$handleContent = fopen(ProjMailDir."/upload/".$flagtime."_content.txt","w");
fwrite($handleContent,$sujet);
fclose($handleContent);
$handle = fopen(ProjMailDir."/upload/".$flagtime."_batch.sh","w");
fwrite($handle, "#!/bin/sh\n");
$muttCde="/usr/bin/mutt ".$a." -s '".$object."' -a '".ProjMailDir."/upload/".$piecejointe."' < ".ProjMailDir."/upload/".$flagtime."_content.txt";
fwrite($handle, $muttCde);
fclose($handle);

$Cde="/usr/bin/at -f ".ProjMailDir."/upload/".$flagtime."_batch.sh ".$timeCde." 2>&1 1> /dev/null";
$return_value = shell_exec($Cde);

Dernière modification par SteFBlood (Le 30/12/2009, à 15:32)

Hors ligne

#8 Le 05/01/2010, à 12:35

SteFBlood

Re : Un problème bizarre avec 'mutt' et la commande 'at'

up subject ! Je sèche c'est terrible...

Hors ligne