Bonjour,
Version courte :
Pourquoi j'obtiens un fichier /tmp/who.txt vide lorsque
Code :
- $cd /etc/init.d/
- $sudo nano test.sh
|
j'y écris "who > /tmp/who.txt"
Code :
- $sudo chmod +x test.sh
- $sudo update-rc.d test.sh defaults
- $sudo reboot
- $cat /tmp/who.txt
|
Alors que
Code :
- $sh /etc/init.d/test.sh
- $cat /tmp/who.txt
|
m'affiche bien quelque chose
(idem si le script est lancé en sudo)
et j'ai le même problème (c'est mon problème d'origine en fait)
avec un script contenant
Code :
- wget <quelque chose> | cut <param> | cut <param> | nail -v -s "<sujet>" <emailDeDestination>
|
Une idée pourquoi cela se produit ainsi?
Vestion longue :
Cherchant à exécuter un script à tous les démarrages qui effectuerait une requête wget pour ensuite m'envoyer le résultat par mail, j'ai commencé par écrire le dit script
$sudo nano /etc/init.d/monScript.sh
j'y ai mis mes instructions du type
Code :
- wget <quelque chose> | cut <param> | cut <param> | nail -v -s "<sujet>" <emailDeDestination>
|
ou encore du type
Code :
- wget <quelque chose> | cut <param> | cut <param> > /tmp/monFichier.txt
- echo "blablabla" | nail -v -s "<sujet>" -a /tmp/monFichier.txt <emailDeDestination>
|
je le rends exécutable
Code :
- $sudo chmod +x /etc/init.d/monScript.sh
|
je place le script pour les runlevels
Code :
- $sudo update-rc.d /etc/init.d/monScript.sh defaults
|
je test le script
Code :
- $sh /etc/init.d/monScript.sh
|
nickel, je reçois direct le mail
je le test avec sudo
Code :
- $sudo sh /etc/init.d/monScript.sh
|
nickel tout marche à merveille.
Dans le premier script (wget <quelque chose> | cut <param> | cut <param> | nail -v -s "<sujet>" <emailDeDestination> ) je reçois direct le mail et dans le cas du deuxième
Code :
- wget <quelque chose> | cut <param> | cut <param> > /tmp/monFichier.txt
- echo "blablabla" | nail -v -s "<sujet>" -a /tmp/monFichier.txt <emailDeDestination>
|
je reçois bien le mail ET un fichier /tmp/monFichier.txt est bien créé et envoyé et contient bien les informations que je veux.
j'efface donc /tmp/monFichier.txt et je reboot $sudo reboot
Et là, je ne reçois aucun mail ... et dans le cas du script avec > /tmp/monFichier.txt, le fichier est bien créé mais est vide. Donc le script s'exécute bien au démarrage, vu qu'il crée le fichier mais pas correctement.
Bon, je me dis que par défault, lors du "$sudo update-rc.d /etc/init.d/monScript.sh defaults" il lui a mis le numéro 20 et peut être qu'il est exécuté trop tôt, avant que le réseau ne soit up. Et donc non seulement le wget ne fonctionne pas mais l'appel à nail non plus.
Donc je change ça
Code :
- $sudo update-rc.d -f /etc/init.d/monScript.sh remove
- $sudo update-rc.d /etc/init.d/monScript.sh defaults 99
- $sudo reboot
|
mais ... rien ne change. Bizarre. Je me dis que peut-être, le script n'est pas exécuté en tant que root, je ne sais pas.
Donc je test un script contenant seulement
who > /tmp/who.txt
(pareil, chmod+x, update-rc.d)
que je test en tant que user et sudo et aucun problème. J'efface alors /tmp/who.txt
je reboot et là, rebelotte. Je me prend un fichier /tmp/who.txt de vide.
D'où mes questions, n'ayant cette fois plus de piste (ça fait déjà quelques temps que je cherche à m'envoyer un mail automatiquement, et mes recherches sur internet ont porté leur fruit pour progresser, lentement mais surement avec un peu d'acharnement, jusqu'à ce stade) :
1°) une idée sur "pourquoi un script contenant seulement who > /tmp/who.txt produit un fichier vide si exécuté au démarrage et plein si exécuté par un user après le démarrage?"
2°) mes deux problèmes sont-ils réellement liés? ai-je manqué quelque chose?
Message édité par Aschrack le 12-09-2009 à 15:06:39