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 23/01/2013, à 16:05

Graindorge

problème de script avec cron

Bonjour,

J'ai un DNS dynamique chez OVH (dynhost). J'utilise un script qui va mettre à jour le dns avec l'ip dynamique de mon router. Je l'ai trouvé sur le net (ici) et je l'ai adapté à ma situation.

voila le script :

 #!/bin/bash

## CONFIGURATION ##

# Connection to OVH DynHost
username=xxxxx
password=yyyyyy
host=host.be

# How to log
# 1 = true, 0 = false
log_change=1
log_no_change=0
log_file=/var/log/dynhost.log

# File with old IP
old_ip_file=/var/cache/ip_old

# To avoid error "file not found"
touch ${old_ip_file}
touch ${log_file}


# Get Public IP
ip=`w3m -dump http://xxxxxx.xx/ | awk -F': ' '/IP/ { print $2 }'`

# Get Old Public IP
ip_old=`cat ${old_ip_file}`

# Test if IPs are equal
if [ "${ip}" = "${ip_old}" ]
then
	if [ "${log_no_change}" = "1" ]
	then
		echo "`date`: No IP change was found (${ip})" >> ${log_file}
	fi
else
	echo ${ip} > ${old_ip_file}
	if [ "${log_change}" = "1" ]
	then
		echo "`date`: IP has change (Old : ${ip_old}, New : ${ip})" >> ${log_file}
		updatedd ovh -- --ipv4 ${ip} ${username}:${password} ${host} >> ${log_file}
	else
		updatedd ovh -- --ipv4 ${ip} ${username}:${password} ${host}
	fi
fi

Le script fonctionne correctement quand je le lance manuellement à la ligne de commande. Voila le contenu de /var/log/dynhost.log après une mise à jour réussie de l'ip chez ovh :

mercredi 23 janvier 2013, 14:53:48 (UTC+0100): IP has change (Old : 213.251.165.203, New : 213.219.123.102)
host.be: Update good and successful, IP updated.

Mais quand je veux exécuter cette tache avec cron ça ne fonctionne pas. Le script semble s'exécuter mais en "sautant" la mise à jour chez ovh avec l'appel updatedd. Voici le contenu de /var/log/dynhost.log après une mise à jour ratée de l'ip chez ovh :

mercredi 23 janvier 2013, 14:53:48 (UTC+0100): IP has change (Old : 213.251.165.203, New : 213.219.123.102)

Il manque le message de retour de updatedd ovh -- --ipv4 ${ip} ${username}:${password} ${host} >> ${log_file}


Voila la ligne que j'ai rajouté dans cron.

*/15 * * * * /root/scripts/updateDynhost.sh

Quelqu'un a une idée ? Parce que là moi je vois vraiment pas.


Merci.

Hors ligne

#2 Le 23/01/2013, à 17:36

Graindorge

Re : problème de script avec cron

Je crois avoir trouvé. En mettant le chemin absolu de updatedd, ça fonctionne.

/usr/local/bin/updatedd ovh -- --ipv4 ${ip} ${username}:${password} ${host}

Donc une question, je pensais qu'en exécutant le script avec cron on était dans le même environnement que celui de l’utilisateur ? Y a t il moyen que ce soit le cas.

Merci.

Dernière modification par Graindorge (Le 23/01/2013, à 17:36)

Hors ligne

#3 Le 24/01/2013, à 06:47

nesthib

Re : problème de script avec cron

Par défaut cron n'est chargé qu'avec un minimum de variables d'environnement (LOGNAME, HOME, SHELL et quelques autres pour la gestion du mail), il faut donc définir le PATH si l'on n'indique pas les chemins absolus des exécutables. wink
Il est aussi possible de définir d'autres variables d'environnement (par exemple DISPLAY si l'on lance des programmes graphiques).

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DISPLAY=":0"
# m h  dom mon dow   command
0 0 * * * ma_commande_du_path

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne