Aller au contenu

Cherche Aide


Messages recommandés

Bonjour les gens !

Je cherche un petit coup de main pour mettre en place un script, que je souhaite placer dans mon rc.local, de façon à être executé à charge démarrage du syno.

L'idée est la suivante :

1- Vérifier que "/etc/ddns_provider.conf" et "/etc.defaults/ddns_provider.conf" sont identiques

2- Si ils ne sont pas identiques, copier le fichier "/etc/ddns_provider.conf" et le coller dans "/etc.defaults/ddns_provider.conf" en écrasant l'ancien

3- Si la 2ème étape a eu besoin d'être effectuée, rebooter le syno

Voilà, rien de bien méchant je suppose, mais hors de mes compétences. Quelqu'un pour m'aider ?

Merci par avance!

Lien vers le commentaire
Partager sur d’autres sites

Hello Bud77,

Merci pour ta réponse et pour ton éclairage !

J'ai effectivement les grandes lignes .. mais je suis toujours loin d'avoir un script fonctionnel même avec ça ! C'est vraiment hors de mes compétences. J'ai rarement l'habitude de demander du pré maché .. mais .. dans ce cas .. :rolleyes:

Lien vers le commentaire
Partager sur d’autres sites

J'ai rien pour tester au boulot, mais y'a surement CoolRaoul qui va passer par là :D

Voila, voila ...

Théoriquement, pour respecter strictement ta spec ceci devrait faire l'affaire (à mettre dans un script autonome, lui même invoque par /etc/rc.local

#!/bin/sh
# 1- Vérifier que "/etc/ddns_provider.conf" et
# "/etc.defaults/ddns_provider.conf"sont identiques
#
# 2- Si ils ne sont pas identiques, copier le fichier
# "/etc/ddns_provider.conf" et le coller dans
# "/etc.defaults/ddns_provider.conf" en écrasant l'ancien
# 3- Si la 2ème étape a eu besoin d'être effectuée, rebooter le syno


PATH=/bin:/usr/bin
A_FILE="/etc/ddns_provider.conf"
D_FILE="/etc.defaults/ddns_provider.conf"
cmp -s $A_FILE $D_FILE && exit  # fichier identiques: rien a faire
cp $A_FILE $D_FILE
reboot
 

Mais attention, faire un "reboot" lors de la séquence de startup (puisque appelé par rc.local), je ne pense pas que ce soit une très bonne idée.

Le boot DSM exécute certaines parties en parallèle, ton reboot va arriver comme un poisson dans l'eau en plein milieu de cette séquence tandis que d'autre opérations sont en train de se dérouler (démarrage des packages par exemple) et ca risque de mettre un joyeux souk.

Déja, a la place du reboot peut-être se contenter d'un simple

/usr/syno/etc/rc.d//S09DDNS.sh restart

serai moins violent

Mais meme dans ce cas, et a cause du parallellisme du démarrage, ton rc.local peut tres bien être exécuté avant ou apres le démarrage DDNS, ou pire ... simultanément!

Tu vois, c'est pas si simple.

Je vais essayer de trouver une solution plus robuste

Stay tuned...

Lien vers le commentaire
Partager sur d’autres sites

Ceci devrait être plus robuste:

#!/bin/sh                                      
PATH=/bin:/usr/bin                                                                                                                                                 
logfile=/tmp/$(basename $0).log
if [ "$1" == "" ]  ; then                                      
    # on se relance mais cette fois en se detachant                                      
    nohup  $0 "CALLBACK"  </dev/null >$logfile 2>&1 &                                   
    exit 0                            
fi                                    
#       a partir d'ici on s'execute de facon autonome                                                                             
MY_DDNS_CONF="/usr/local/etc/ddns_provider.conf"
DDNS_CONF="/etc/ddns_provider.conf"
   
cmp -s $MY_DDNS_CONF $DDNS_CONF && exit  # fichier identiques: rien a faire

#       attente active que DDNS soit demarré, 5 minutes au total
tries=30                        # nombre de tentatives
delay=10                        # secondes

until killall -q -0 ddnsd  ; do       
    sleep $delay                      
    tries=$(expr $tries - 1)          
    if [ $tries -eq 0 ] ; then        
        # toujours pas de DDNS, on laisse tomber
        echo "service DDNS inactif" >&2
        exit 1                        
    fi                                
done                                  
cp $MY_DDNS_CONF $DDNS_CONF
           
/usr/syno/etc/rc.d/S09DDNS.sh restart

remarques:

  • J'ai cru comprendre que ce que tu souhaitais étais simplement de maîtriser la config ddns, donc mieux vaut utiliser comme référence un fichier non touché par DSM, j'ai pris "/usr/local/etc/ddns_provider.conf"
  • Ceci constitue un script autonome (le mettre par exemple dans "/usr/local/bin/fix_ddns_conf"), qui doit être appelé au boot, à partir de /etc/rc.local ou d'une autre manière.
  • des qu'il est invoqué, il se relance lui-même en mode détaché et attend que ddns soit démarré pour faire la manip au moment opportun.

ne pas hésiter à me corriger si je n'ai pas bien compris l'effet souhaité



**EDIT***

Attention a bien éditer "/usr/local/etc/ddns_provider.conf" avant de lancer le script la 1ère fois!

**EDIT#2**

fixé grammaire et orthographe

Modifié par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

Hello @CoolRaoul,

Merci beaucoup d'avoir pris le temps de me pondre ce petit script. Tu as parfaitement compris mon besoin !

Pour détailler ma demande, cela fait référence à :

http://blog.isorez.fr/index.php?post/2011/03/28/IP-Dynamique-NAS-Synology-et-OVH

En fait le but est d'utiliser OVH et mon nom de domaine .fr comme service DDNS. Le problème est qu'à chaque reboot du syno, la modification est supprimée et remplacé par le fichier ddns_provider.conf de base du syno.

Je vais donc tester installer ton script, attendre une mise à jour du DSM et .. serrer les fesses !

Encore une fois, merci, je suis un grand lecteur de l'ombre de ce forum et c'est vraiment agréable de voir qu'on peut y trouver rapidement de l'aide.

Bonne journée à vous !

Modifié par eukamoon
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.