Probleme Difference [BASH] - Shell/Batch - Programmation
Marsh Posté le 03-03-2014 à 18:18:23
Es-tu sur de contenu du fichier /tmp/ip_temp ? Il n'y a pas de ligne blanche ou autre ? Vu que tu le génère à partir d'un site que tu ne maîtrise pas toi, en ce qui me concerne je mettrais un certain nombre de protection, notamment je vérifierais via regexp que j'obtiens bien une et une seule adresse IP sans rien d'autre. D'ailleurs il ne sert a rien de passer par un fichier temporaire non plus. En gros je ferais quelque chose comme (fait vite fait sans test il y a surement mieux a faire) :
Code :
|
Le mode debug que tu montres ne corresponds pas à ton code :
Quelle est la ligne 27 de ton script ? c'est comme si tu avait fait "$T1" au lieu de "echo $T1".
Le problème de la ligne 33 est le manque d'espace entre les "[" et les valeurs.
Il faut bien des quotes également. Si tu veux oter tout doute lié à la présence de variables vide par exemple tu peux modifier le test pour faire quelque chose comme :
Code :
|
Attention dans la ligne en commentaire "echo T1 > /tmp/monippublique.txt" il n'y a pas de $ avant le nom de la variable.
Marsh Posté le 04-03-2014 à 08:54:39
Salut, merci pour ta réponse,
- "D'ailleurs il ne sert a rien de passer par un fichier temporaire non plus"
en fait à la base j'avias fais ça :
T1=`wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1 > /tmp/monippublique.txt`
je vais vérifier tout ça ...
[edit]
- "Es-tu sur de contenu du fichier /tmp/ip_temp ? Il n'y a pas de ligne blanche ou autre ?"
via le lien checkip, il me retourne l'@ avec un espace au début.
- "En gros je ferais quelque chose comme (fait vite fait sans test il y a surement mieux a faire) :"
J'ai testé :
Code :
|
il ne me retourne rien.
- "Quelle est la ligne 27 de ton script ? c'est comme si tu avait fait "$T1" au lieu de "echo $T1"."
Code :
|
Code :
|
Marsh Posté le 04-03-2014 à 11:56:22
nomiss a écrit : en fait à la base j'avias fais ça : T1=`wget http://checkip.dyndns.org/ -O - -o /dev/null | cut -d: -f 2 | cut -d\< -f 1 > /tmp/monippublique.txt` je vais vérifier tout ça ... |
Normal que ca ne donne rien dans T1, si tu mets une redirection (le > ) tu n'auras rien dans la variable T1
nomiss a écrit :
J'ai testé :
il ne me retourne rien. |
Normal, si il y a un espace avant, il faut l'inclure dans la regexp, ou alors le supprimer avant de passer la regexp
nomiss a écrit :
$T1 |
Le $T1 tout seul la ne sert a rien. C'est lui qui te fait une erreur de syntaxe : le système essaie d'exécuter le contenu de la variable, donc ton IP, ce qui n'est pas une commande valide
nomiss a écrit :
|
Il manque les espaces apres et avant les [ ]. En outre le -ne ne sert qu'a tester des entiers, ce qui n'est pas le cas en l'occurence. Il faut donc utiliser !=
Code :
|
Marsh Posté le 04-03-2014 à 11:58:23
Code :
|
je n'ai plus d'erreur, par contre j'attend encore mon mail.
Je vais aussi modifier T1 et mettre lcommande wget dedans
[edit] j'ai pris note de tout ce que tu m'as dis, merci.
Marsh Posté le 05-03-2014 à 19:50:39
Script Opérationnel !
Code :
|
à présent je vais le mettre en Cron,
Comment ça se passe pour ça ? (CENTOS 6.5)
L'idéal serait des le boot de ma VM et puis toute les 10mn qui suivent, possible ?
Marsh Posté le 06-03-2014 à 22:09:50
Un cron est exécuté à intervalles de temps. Pour exécuter un programme au boot, il te faut un script de boot.
http://www.commentcamarche.net/faq [...] it-et-cron
Marsh Posté le 07-03-2014 à 10:23:53
Oui j'avais pensé à ça. Je vais exploiter ce lien, merci
[edit]
j'ai juste à mettre mon .sh dans le init.d ? et de parametrer ensuite un cron ?
Marsh Posté le 03-03-2014 à 14:55:12
Bonjour tout le monde,
je me bagarre avec mon script Shell depuis quelques temps.
Son but :
Récupérer mon IP publique, puis la stocker dans un fichier ip_temp.
Ensuite si le contenu du ip_temp est différent du fichier de réference monippublique.txt, il devra injecter la nouvelle ip dans le fichier de ref et ensuite m'envoyer un mail avec ma nouvelle IP.
Ce script sera executé en tâche de fond via Cron
CODE : code provisoire le temps de régler le pb
Mode debug
mon fichier de ref a volontairement des lettres dans son IP pour que la MAJ se fasse
Message édité par nomiss le 03-03-2014 à 15:49:05