Aller au contenu

Script De Connexion Au Compte Dyndns


Messages recommandés

Bonjour,

DynDNS vient de changer sa politique pour les clients gratuits : désormais il faut se connecter au moins une fois par mois sous peine de suppression du compte.

Quelqu'un a déjà créé un script bash pour automatiser cette connexion.

Question : comment adapter et faire fonctionner ce script sur SYNOLOGY ?

Lien vers le commentaire
Partager sur d’autres sites

Bravo Dyndns !!!

Encore une societe qui passe d'un compte limite et gratuit à "tout faire pour passer le client en payant" !

Se connecter à leur site une fois par mois et non plus par la mise à jour du client dyndns : Comment virer les clients gratuits.

Heureusement qu'il reste d'autres fournisseurs de service gratuit comme no-ip ou changeip !

Bon vent à Dyndns mais sans moi !

Lien vers le commentaire
Partager sur d’autres sites

les clients gratuits

Bel oxymore. :P

Apparemment, il est possible de créer une tâche planifiée dans le... planificateur de tâches pour exécuter le script (merci pour le lien d'ailleurs).

http://forum.synology.com/enu/viewtopic.php?f=226&t=65363

Je m'y attelle également, pour continuer à bénéficier de la fonctionnalité de contrôle parental Internet Guide de Dyn, qui m'allait très bien comme ça. On imagine que Dyn fait déjà bon usage des requêtes effectuées via ses serveurs DNS pour se payer.

:ph34r:

Edit : avancement des travaux.

Une version du script qui fonctionne lorsque lancée en telnet via le compte root :

#!/bin/sh
LOGIN="lelogindefoksaduresurdyn.com"
PASSWORD="lemotdepassedefoksaduresurdyn.com"
COOKIES="dynsdns.cookies.txt"
#UA="Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/0.0.0 (KHTML, like Gecko) Version/0.0.0 Safari/0.0.0"
LOGINURL="https://account.dyn.com/"
POSTURL="$LOGINURL"
CHKURL="https://account.dyn.com/"
DST="-" || DST="/dev/null"
# Ensure no broken session caching...
[[ -s "$COOKIES" ]] && rm "$COOKIES"
echo >&2 "DEBUG: Fetching initial headers to pre-load cookies..."
curl -b $COOKIES -c $COOKIES -Ikso "$DST" -A "$UA" --url "$LOGINURL"
echo >&2 "DEBUG: Fetching UID..."
VALUE="$( curl -b $COOKIES -c $COOKIES -kso - -A "$UA" --url "$LOGINURL" | grep -m 1 "multiform" | cut -d"'" -f 6 )"
echo >&2 "DEBUG: Read UID as '$VALUE' - posting data..."
curl -b $COOKIES -c $COOKIES -d "username=$LOGIN" -d "password=$PASSWORD" -d "iov_id" -d "multiform=$VALUE" -e "$LOGINURL" -kso "$DST" -A "$UA" --url "$POSTURL"
echo >&2 "DEBUG: Response received - verifying result..."
curl -b $COOKIES -c $COOKIES -e "$POSTURL" -kso - -A "$UA" --url "$CHKURL" | grep -q "<span>Welcome&nbsp;<b>$LOGIN</b></span>" && echo "Login successful" || echo >&2 "Login failed"

On récupère bien le fichier dynsdns.cookies.txt dans le dossier du script.

Par contre, avec le planificateur de tâches, script toujours lancé en root via la commande "sh /volume1/scripts/dyndns-login.sh" dans l'interface de configuration de la tâche, cela ne fonctionne pas. Si on regarde l'état des tâches planifiées sur le syno :

DiskStation> cd /
DiskStation> cd /temp
DiskStation> synoschedtask --get
               ID: [2]
             Name: [dyn-login]
            State: [enabled]
            Owner: [root]
             Type: [weekly]
       Start date: [2013/5/20]
     Days of week: [Sat]
         Run time: [20]:[30]
          Command: [sh /volume1/scripts/dyndns-login.sh]
    Last Run Time: Mon May 20 16:11:30 2013
           Status: [Error(2)]

Je soupçonne un problème de chemin dans le script, en supposant que le code Status corresponde à la liste des codes retours de cron.

Bref, mes maigres compétences m'empêchent d'aller plus loin. Help ! :(

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

Salut Foksadure

Tout d'abord merci pour ton script, c'est effectivement une très bonne idée pour éviter de voir son compte dyndns supprimé.

Voici les quelques modifications que j'ai apporté à ton scripts (peut être que tes soucis ne viennent pas de là mais bon ..) et il fonctionne parfaitement dans mon cas par l'appel de la tâche planifiée que j'ai crée :

synoschedtask --get
               ID: [3]
             Name: [dyndns]
            State: [enabled]
            Owner: [root]
             Type: [daily]
       Start date: [0/0/0]
         Run time: [17]:[30]
          Command: [/volume1/homes/user/dyndns-login.sh >/root/dyndns-login.log 2>&1]
    Last Run Time: Wed May 22 17:30:02 2013
           Status: [Success]

J'ai tout d'abord mis un chemin complet vers /tmp/ pour le fichier de cookies et j'ai aussi mis le chemin complet des commandes appelés dans ton script :

#!/bin/sh
LOGIN="lelogindefoksaduresurdyn.com"
PASSWORD="lemotdepassedefoksaduresurdyn.com"
COOKIES="/tmp/dynsdns.cookies.txt"
LOGINURL="https://account.dyn.com/"
POSTURL="$LOGINURL"
CHKURL="https://account.dyn.com/"
DST="-" || DST="/dev/null"
# Ensure no broken session caching...
[[ -s "$COOKIES" ]] && rm "$COOKIES"
echo >&2 "DEBUG: Fetching initial headers to pre-load cookies..."
/usr/syno/bin/curl -b $COOKIES -c $COOKIES -Ikso "$DST" -A "$UA" --url "$LOGINURL"
echo >&2 "DEBUG: Fetching UID..."
VALUE="$( /usr/syno/bin/curl -b $COOKIES -c $COOKIES -kso - -A "$UA" --url "$LOGINURL" | grep -m 1 "multiform" | cut -d"'" -f 6 )"
echo >&2 "DEBUG: Read UID as '$VALUE' - posting data..."
/usr/syno/bin/curl -b $COOKIES -c $COOKIES -d "username=$LOGIN" -d "password=$PASSWORD" -d "iov_id" -d "multiform=$VALUE" -e "$LOGINURL" -kso "$DST" -A "$UA" --url "$POSTURL"
echo >&2 "DEBUG: Response received - verifying result..."
/usr/syno/bin/curl -b $COOKIES -c $COOKIES -e "$POSTURL" -kso - -A "$UA" --url "$CHKURL" | grep -q "<span>Welcome&nbsp;<b>$LOGIN</b></span>" && echo "Login successful" || echo >&2 "Login failed"

Ensuite, afin de récupérer les potentielles erreurs lors de l'exécution du script dans la crontab, j'ai mis la ligne de commande suivante dans la partie "Script défini par l'utilisateur " du planificateur de tâches :

/volume1/homes/user/dyndns-login.sh >/root/dyndns-login.log 2>&1

ce qui permet d'avoir le retour du script dans le fichier de log "/root/dyndns-login.log"

J'espère t'avoir aidé autant que tu nous a aidé pour la création de ton script ;-)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Ce script n'est pas le mien mais celui que Stuart SHELDON a créé et posté sur son blog, et que tahitibub nous a linké dans son post, puisqu'il est l'auteur de ce fil. En clair : http://blog.stuart.shelton.me/archives/1024

Ceci rendu à César, merci loli71 pour ces modifications et pour avoir pris le temps de nous les détailler : c'est exactement ce que je voulais obtenir en plus (un fichier de log).

Edit : Ça marche ! :wub:

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

Merci à vous pour nous aider !!

j'ai essayé mais j'ai à priori un problème de login. Voici un cat du fichier log :

DEBUG: Fetching initial headers to pre-load cookies...
HTTP/1.1 200 OK
Date: Thu, 23 May 2013 06:41:08 GMT
Server: Apache
Cache-control: no-cache
Content-Type: text/html; charset=ISO-8859-1
Expires: Thu, 23 May 2013 06:41:08 GMT
Set-Cookie: id=JVnFw29ptwywee+klWPLagoCpWw; domain=account.dyn.com; path=/; expires=Wed, 21-Aug-2013 06:41:08 GMT
Set-Cookie: s1=q3c8tlw7j2q67k1g; domain=.dyn.com; path=/
Set-Cookie: s2=9_%3d2zvv71skt4c6%3d; domain=account.dyn.com; path=/; secure
Accept-Ranges: none
Vary: Accept-Encoding
DEBUG: Fetching UID...
DEBUG: Read UID as '7139F84C6181229A3C7AA8F85C11BF5FA8' - posting data...
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>302 Found</TITLE>
</HEAD><BODY>
<H1>Found</H1>
The document has moved <A HREF="https://account.dyn.com/">here</A>.<P>
</BODY></HTML>
DEBUG: Response received - verifying result...
Login failed

Ca vous dit quelquechose ???

Quand je me connecte chez dyndns, ce n'est pas sur https://account.dyn.com/ mais sur https://account.dyn.com/entrance/ pour avoir la fenetre de login. Mais j'ai essayé les deux adresses dans le script sans résultat.

J'ai aussi fait un CHMOD u+x dyn... pour le rendre exécutable.

Le script est dans /volume1/homes/admin.

J'ai raté quelquechose ? Merci

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

bonjour,

ça m'interesse également de mettre en place ce script mais j'avoue que je ne comprend pas bien ce qu'il faut faire exactement.

quelqu'un peut il m'expliquer étape par étape la procédure car pour l'instant, c'est du chinois pour moi.

à quel moment, je met mon pass et login?

merci.

Lien vers le commentaire
Partager sur d’autres sites

Hello PAT77,

Tout d'abord merci aux différents contributeurs, ça marche bien :)

J'ai repris le script du site http://blog.stuart.shelton.me/archives/1024

Ajouter le chemin absolu pour la variable COOKIES

Dans un premier temps tu testes en ligne de commande le script sh /volume1/scripts/dyndns-login.sh ( endroit ou se trouve ton script )

Ne pas oublier de rendre ton script exécutable avec la commande du type : chmod +x nom_du_script

@]+

Lien vers le commentaire
Partager sur d’autres sites

Merci à vous pour nous aider !!

j'ai essayé mais j'ai à priori un problème de login. Voici un cat du fichier log :

DEBUG: Fetching initial headers to pre-load cookies...
HTTP/1.1 200 OK
Date: Thu, 23 May 2013 06:41:08 GMT
Server: Apache
Cache-control: no-cache
Content-Type: text/html; charset=ISO-8859-1
Expires: Thu, 23 May 2013 06:41:08 GMT
Set-Cookie: id=JVnFw29ptwywee+klWPLagoCpWw; domain=account.dyn.com; path=/; expires=Wed, 21-Aug-2013 06:41:08 GMT
Set-Cookie: s1=q3c8tlw7j2q67k1g; domain=.dyn.com; path=/
Set-Cookie: s2=9_%3d2zvv71skt4c6%3d; domain=account.dyn.com; path=/; secure
Accept-Ranges: none
Vary: Accept-Encoding
DEBUG: Fetching UID...
DEBUG: Read UID as '7139F84C6181229A3C7AA8F85C11BF5FA8' - posting data...
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>302 Found</TITLE>
</HEAD><BODY>
<H1>Found</H1>
The document has moved <A HREF="https://account.dyn.com/">here</A>.<P>
</BODY></HTML>
DEBUG: Response received - verifying result...
Login failed

Ca vous dit quelquechose ???

Quand je me connecte chez dyndns, ce n'est pas sur https://account.dyn.com/ mais sur https://account.dyn.com/entrance/ pour avoir la fenetre de login. Mais j'ai essayé les deux adresses dans le script sans résultat.

J'ai aussi fait un CHMOD u+x dyn... pour le rendre exécutable.

Le script est dans /volume1/homes/admin.

J'ai raté quelquechose ? Merci

Pour ma part, j'ai bien le Login successful malgrès la redirection de page :

DEBUG: Fetching initial headers to pre-load cookies...
HTTP/1.1 200 OK
Date: Wed, 05 Jun 2013 09:08:03 GMT
Server: Apache
Cache-control: no-cache
Content-Type: text/html; charset=ISO-8859-1
Expires: Wed, 05 Jun 2013 09:08:03 GMT
Set-Cookie: id=UHwlDqRUAHGk8k; domain=account.dyn.com; path=/; expires=Tue, 03-Sep-2013 09:08:03 GMT
Set-Cookie: s1=f5a713puh3pv; domain=.dyn.com; path=/
Set-Cookie: s2=rzd0igu%3du; domain=account.dyn.com; path=/; secure
Accept-Ranges: none
Vary: Accept-Encoding

DEBUG: Fetching UID...
DEBUG: Read UID as '9020D96FFD49976E8E6D2' - posting data...
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>302 Found</TITLE>
</HEAD><BODY>
<H1>Found</H1>
The document has moved <A HREF="https://account.dyn.com/">here</A>.<P>
</BODY></HTML>
DEBUG: Response received - verifying result...
Login successful

Je pense donc que tu dois avoir un problème de définition de LOGIN et PASSWORD dans le script, si vous avez des caractères spéciaux dans votre mot de passe, pensez bien à utiliser les simple quotes pour encadrer le mot de passe plutôt que les doubles quotes :

Par exemple :

PASSWORD='M$N_M@tdePASSE!'

au lieu de

PASSWORD="M$N_M@tdePASSE!"

Lien vers le commentaire
Partager sur d’autres sites

Hello,

2 petites modifs pour avoir un fichier de log plus propre :

Ajout de la date et de l'heure dans le script :

curl -b $COOKIES -c $COOKIES -e "$POSTURL" -kso - -A "$UA" -H "Accept-Language: $AL" --url "$CHKURL" |
grep -qE "<span>(Welcome|Hi)&nbsp;<b>$LOGIN</b></span>"
&& echo "`date +%Y%m%d_%H%M%S`: Login successful"
|| { echo >&2 "`date +%Y%m%d_%H%M%S`: Login failed" ; exit 1 ; }

Au niveau de la planification des tâches : incrémentation dans le fichier de log :

sh /volume1/homes/user/dyndns-login.sh 2>&1 >> /volume1/homes/user/dyndns-login.log

@+

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

merci mais tu parles chinois pour moi :blink: . Tu fais comment concretement pour ajouter ce script dans le ds? j'ai un ds110 avec derniere version.

Il me faut la façon d'inserer le script pour debutant, je pars de loin... :unsure:

merci en tout cas pour l'aide.



je ne comprend pas comment tu fais pour savoir que c'est bon.

Lien vers le commentaire
Partager sur d’autres sites

Hello,

Dans un premier temps, il faut te connecter en mode terminal.

Pour se faire, tu vas sur l'interface du NAS et tu actives SSH :

Panneau de configuration / Service réseau / Terminal / Activer le service SSH.

Pour transférer ton script, le plus simple est de le copier sur une clé USB et d'utiliser File Station pour le mettre dans le

répertoire de ton choix.

Tu peux ensuite suivre le tuto pour utliser une web console.

Une fois le script lancé, il te donne l'info suivante :

DEBUG: Response received - verifying result...Login successful

@+

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

  • 4 semaines après...
  • 2 semaines après...

Merci à tous pour vos contributions.

Voici donc ce que j'ai mis dans mon fichier sh :

#!/bin/sh
LOGIN="xxxxxxxxxx"
PASSWORD="xxxxxxxxxx"
COOKIES="/tmp/dynsdns.cookies.txt"
LOGINURL="https://account.dyn.com/"
POSTURL="$LOGINURL"
CHKURL="https://account.dyn.com/"
DST="-" || DST="/dev/null"
# Ensure no broken session caching...
[[ -s "$COOKIES" ]] && rm "$COOKIES"
echo >&2 "DEBUG: Fetching initial headers to pre-load cookies..."
/usr/syno/bin/curl -b $COOKIES -c $COOKIES -Ikso "$DST" -A "$UA" --url "$LOGINURL"
echo >&2 "DEBUG: Fetching UID..."
VALUE="$( /usr/syno/bin/curl -b $COOKIES -c $COOKIES -kso - -A "$UA" --url "$LOGINURL" | grep -m 1 "multiform" | cut -d"'" -f 6 )"
echo >&2 "DEBUG: Read UID as '$VALUE' - posting data..."
/usr/syno/bin/curl -b $COOKIES -c $COOKIES -d "username=$LOGIN" -d "password=$PASSWORD" -d "iov_id" -d "multiform=$VALUE" -e "$LOGINURL" -kso "$DST" -A "$UA" --url "$POSTURL"
echo >&2 "DEBUG: Response received - verifying result..."
/usr/syno/bin/curl -b $COOKIES -c $COOKIES -e "$POSTURL" -kso - -A "$UA" --url "$CHKURL" | grep -q "<span>Welcome&nbsp;<b>$LOGIN</b></span>" && echo "Login successful" || echo >&2 "Login failed"

Pour info, le prénommé "Dirk" a modifié le script de façon à gérer plusieurs comptes Dyndns et à envoyer un mail (voir Post 34 du blog stuart).

Voici ce que ça donne chez lui :

#!/usr/bin/env bash

LOGIN=(     'account1'   'account2'   'accountn' )
PASSWORD=(  'password1'  'password2'  'passwordn' )
#UA="Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/0.0.0 (KHTML, like Gecko) Version/0.0.0 Safari/0.0.0"

EMAIL='myemail@example.com'

COOKIES="/tmp/.dynsdns.cookies.txt"

LOGINURL="<a href="https://account.dyn.com/entrance/&quot" rel="nofollow">https://account.dyn.com/entrance/&quot</a>;
POSTURL="$LOGINURL"
CHKURL="<a href="https://account.dyn.com/&quot" rel="nofollow">https://account.dyn.com/&quot</a>;

(( DEBUG )) && DST="-" || DST="/dev/null"

for i in ${!LOGIN[*]};
do (
        # Ensure no broken session caching...
        [[ -s "$COOKIES" ]] && rm "$COOKIES"

        (( DEBUG )) && echo >&2 "DEBUG: Fetching initial headers to pre-load cookies..."
        curl -b $COOKIES -c $COOKIES -Ikso "$DST" -A "$UA" --url "$LOGINURL"
        (( DEBUG )) && echo >&2 "DEBUG: Fetching UID..."
        VALUE="$( curl -b $COOKIES -c $COOKIES -kso - -A "$UA" --url "$LOGINURL" | grep -m 1 "multiform" | cut -d"'" -f 6 )"
        (( DEBUG )) && echo >&2 "DEBUG: Read UID as '$VALUE' - posting data..."
        curl -b $COOKIES -c $COOKIES -d "username=${LOGIN[$i]}" -d "password=${PASSWORD[$i]}" -d "iov_id" -d "multiform=$VALUE" -e "$LOGINURL" -kso "$DST" -A "$UA" --url "$POSTURL"
        (( DEBUG )) && echo >&2 "DEBUG: Response received - verifying result..."
        curl -b $COOKIES -c $COOKIES -e "$POSTURL" -kso - -A "$UA" --url "$CHKURL" | grep -qE "<span>(Welcome|Hi)&nbsp;<b>${LOGIN[$i]}</b></span>" && (echo "Login successful" | mutt -s "DynDNS ${LOGIN[$i]} successful" -- $EMAIL) || (echo "Login failed" | mutt -s "DynDNS ${LOGIN[$i]} failed" -- $EMAIL)
        sleep 5$i.$RANDOM );
done

Sinon, Artrox pourrait-il publier son code complet, avec les modifs pour le fichier log ?

Merci

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

  • 8 mois après...

Bon bah fin de la partie.

To our Dyn free hostname users:
For the last 15 years, all of us at Dyn have taken pride in offering you and millions of others a free version of our Dynamic DNS Pro product. What was originally a product built for a small group of users has blossomed into an exciting technology used around the world.
That is why with mixed emotions we are notifying you that in 30 days, we will be ending our free hostname program. This change in the business will allow us to invest in our customer support teams, Internet infrastructure, and platform security so that we can continue to strive to deliver an exceptional customer experience for our paying customers.
We would like to invite you to upgrade to VIP status for less than $20 -- a 25% discount good for any package of Remote Access (formerly DynDNS Pro). By doing so, you'll have access to customer support, additional hostnames, and more.

Avoir eu gratuitement Internet Guide - et accessoirement un nom de domaine dynamique - aussi longtemps, c'était quand même chouette, même si finalement je me passerai sans pb des deux.

Merci à eux quand même. :mellow:

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.