[ Linux ][ Script ][ Démarrage ] : Who, Wget résultats vides? PQ?

: Who, Wget résultats vides? PQ? [ Linux ][ Script ][ Démarrage ] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 12-09-2009 à 15:04:06    

Bonjour,
 
Version courte :
Pourquoi j'obtiens un fichier /tmp/who.txt vide lorsque

Code :
  1. $cd /etc/init.d/
  2. $sudo nano test.sh


j'y écris "who > /tmp/who.txt"

Code :
  1. $sudo chmod +x test.sh
  2. $sudo update-rc.d test.sh defaults
  3. $sudo reboot
  4. $cat /tmp/who.txt


 
Alors que

Code :
  1. $sh /etc/init.d/test.sh
  2. $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 :
  1. 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 :
  1. wget <quelque chose> | cut <param> | cut <param> | nail -v -s "<sujet>" <emailDeDestination>


ou encore du type

Code :
  1. wget <quelque chose> | cut <param> | cut <param> > /tmp/monFichier.txt
  2. echo "blablabla" | nail -v -s "<sujet>" -a /tmp/monFichier.txt <emailDeDestination>


 
je le rends exécutable

Code :
  1. $sudo chmod +x /etc/init.d/monScript.sh


 
je place le script pour les runlevels

Code :
  1. $sudo update-rc.d /etc/init.d/monScript.sh defaults


 
je test le script

Code :
  1. $sh /etc/init.d/monScript.sh


nickel, je reçois direct le mail
je le test avec sudo

Code :
  1. $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 :
  1. wget <quelque chose> | cut <param> | cut <param> > /tmp/monFichier.txt
  2. 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 :
  1. $sudo update-rc.d -f /etc/init.d/monScript.sh remove
  2. $sudo update-rc.d /etc/init.d/monScript.sh defaults 99
  3. $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
Reply

Marsh Posté le 12-09-2009 à 15:04:06   

Reply

Marsh Posté le 14-09-2009 à 19:03:55    

ajoute sleep 5
et whoami  
pour voir qui lance le script

Reply

Marsh Posté le 15-09-2009 à 16:34:16    

hello,
 
depuis que j'ai mis la suite

Code :
  1. wget <quelque chose> | cut <param> | cut <param> > /tmp/monFichier.txt
  2. sleep 5
  3. who > /tmp/who.txt
  4. sleep 5
  5. whoami > /tmp/whoami.txt
  6. wget <quelque chose> | cut <param> | cut <param> | nail -v -s "<sujet>" <emailDeDestination>


Je peux désormais j'obtiens

  • dans /tmp/monFichier.txt le bon résultat,
  • dans /tmp/who.txt rien du tout, le fichier reste vide
  • dans /tmp/whoami.txt, il y a marqué root (donc j'en déduis que c'est bien lui qui exécute le script au démarrage)
  • je ne reçois toujours pas de mail envoyé par la dernière commande (alors que $sudo monScript.sh m'envoie bien ce mail avec le contenu du wget)


PS : merci déjà pour ta première réponse :) je pense en effet avoir confondu who et whoami

Reply

Marsh Posté le 15-09-2009 à 19:24:24    

et pendent l'exécution tu as bien les 5 sec de pause, des message d'erreur?  
essaye de mettre le chemin absolu  (/usr/bin/wget)
et au départ du scrpt test le réseau  (ping google..)
who
echo `who`> txt   ?

Reply

Marsh Posté le 20-09-2009 à 11:29:16    

Aschrack a écrit :

hello,
 
depuis que j'ai mis la suite

Code :
  1. wget <quelque chose> | cut <param> | cut <param> > /tmp/monFichier.txt
  2. sleep 5
  3. who > /tmp/who.txt
  4. sleep 5
  5. whoami > /tmp/whoami.txt
  6. wget <quelque chose> | cut <param> | cut <param> | nail -v -s "<sujet>" <emailDeDestination>


Je peux désormais j'obtiens

  • dans /tmp/monFichier.txt le bon résultat,
  • dans /tmp/who.txt rien du tout, le fichier reste vide
  • dans /tmp/whoami.txt, il y a marqué root (donc j'en déduis que c'est bien lui qui exécute le script au démarrage)
  • je ne reçois toujours pas de mail envoyé par la dernière commande (alors que $sudo monScript.sh m'envoie bien ce mail avec le contenu du wget)


PS : merci déjà pour ta première réponse :) je pense en effet avoir confondu who et whoami


Hypothèses:
Ton wget ne marche peut être pas car il te manque des services: dns, reseau???
Ton who ne renvoie rien car il n'y a personne de connecté pendant le boot :D
 
Solution, redirige aussi l'error output de ton wget pour voir ce qui ne va pas :
 
wget <quelque chose> | cut <param> | cut <param> > /tmp/monFichier.txt 2>&1

Reply

Marsh Posté le 02-10-2009 à 01:05:39    

mon wget fonctionne puisque j'ai ce qu'il faut dans "/tmp/monFichier.txt", donc le réseau est ok
 
donc seul nail a un problème en fait, et ce-dernier provient sans doute de ta remarque liée au who
"Ton who ne renvoie rien car il n'y a personne de connecté pendant le boot :D "
ainsi, sans doute que nail ne sait pas où trouver sa configuration, celle-ci étant stockée dans ~/.mailrc de chaque utilisateur
 
pensant qu'il s'agissait de root, j'ai mis sa dans sa home mais apparemment ce n'était peut-être pas une bonne idée
 
cependant, lorsque je fais
 
wget <quelque chose> | cut <param> | cut <param> | nail -v -s "<sujet>" <emailDeDestination> 2> /tmp/errorNail.txt
 
cela me produit un fichier vide ... pas pratique pour voir les erreurs

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed