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 08/05/2010, à 17:53

Kysic

[script/sh] reboot freebox à distance

Vous aimeriez pouvoir redémarrer votre modem adsl freebox à distance ?
Je vous propose un script pour le faire, et sans avoir besoins d'un onduleur...
Par contre il vous faudra quand même un rebond (avec un pc ou un routeur) derrière la freebox et un boîtier hd branché.
L'idée est simple, utiliser la nouvelle fonctionnalité de télécommande à distance du boîtier hd.
Comme il est possible de rebooter le modem adsl via les menu tvs, c'est devenu possible depuis le PC.
Le seul problème c'est les menus de free qui sont cycliques et qui se souviennent du dernier emplacement.
Donc pas moyen de se caler dans un coin pour savoir où l'on est.
Du coup le script mais longtemps à s'exécuter en faisant des manips bizarre pour se caler comme il faut, vous aurez peut être l'impression qu'il fait n'importe quoi mais normalement il devrait fonctionner et faire redémarrer votre modem adsl.
(Dans le menu principal, le script utilise le double item canal+/canalsat pour se placer sur la première ligne, puis il utilise le fait que le menu télésites soit le seul de la deuxième ligne dont on ne puisse revenir en appuyant sur le bouton rouge pour se situer dans les colonnes. Dans le menu paramètres c'est plus facile puisqu'il manque un item sur la première ligne).
Je vous invite à suivre ce qui se passe en allumant la télé pour vérifier.
Je ne vous garanti pas qu'il n'active pas un truc qu'il ne faudrait pas, notamment si free change l'agencement des menus, vous êtes les seuls responsables wink.
Vous pouvez bien sûr partir du script pour faire d'autres choses si vous souhaitez et n'hésitez pas à poster des améliorations.
[edit]
J'ai oublié de préciser, vous devez indiquer votre code télécommande pour que le script puisse fonctionner.
Vous le trouverez dans le menu "Information générale" (lui même dans paramètres) de la freebox HD (sur la télé).[/edit]

#!/bin/sh

# Code télécommande accessible dans le menu
# "Informations générales" de la freebox hd
CODE_FREEBOX=
# Identifiant du boîtier HD
ID_BOITIER=1

# Simule un appui sur la touche $1
# Simule un appui long si $2 vaut "long"
# Liste keys :
#     power : la touche rouge on/off 
#     list : la touche d’affichage de la liste des chaînes entre power et tv 
#     tv : la touche verte TV de commutation péritel. 
#     0 à 9 : les touches 0 à 9 
#     back : la touche jaune en dessous du 7 
#     swap : la touche en dessous du 9 
#     info, mail, help, pip : les touches bleues à droite des numéros de chaîne 
#     epg, media, options : fonctionnalités "secondaires" de ces mêmes touches 
#     vol_inc, vol_dec : volume+ et volume- 
#     prgm_inc, prgm_dec : program+ et program- 
#     ok : touche OK 
#     up, right, down, left : les touches directionnelles entourant le OK 
#     mute : la touche de mise en sourdine 
#     home : la touche free 
#     rec : la touche d’enregistrement 
#     bwd : la touche de retour en arrière (<<) 
#     prev : la touche "précédent" (|<<) 
#     play : la touche lecture/pause 
#     fwd : la touche d’avance rapide (>>) 
#     next : la touche "suivant" (>>|) 
#     red : le bouton rouge (B) 
#     green : le bouton vert (A) 
#     yellow : le bouton jaune (Y) 
#     blue : le bouton bleu (X) 
simulerAppui() {
    if [ "$#" -eq 1 ]
    then 
        isLong=false
    else
        if [ "$#" -eq 2 ]
        then
            isLong=true
        else
            echo "Usage : simulerAppui <key> [long]"
            return 2
        fi
    fi
    wget -q -O /dev/null "http://hd${ID_BOITIER}.freebox.fr/pub/remote_control?code=${CODE_FREEBOX}&key=${1}&long=${isLong}"
}

# Conduit sur l'item radio si l'on
# est dans la troisieme colonne
accueilColonne3Haut() {
    simulerAppui left
    sleep 1
    simulerAppui down
    sleep 1
    simulerAppui right
    sleep 1
    simulerAppui left
    sleep 1
    simulerAppui down
    sleep 1
    simulerAppui right
    sleep 1
    simulerAppui left
    sleep 1
    simulerAppui down
    sleep 1
    simulerAppui right
} 

# Conduit sur l'item en haut de la
# colonne courante sur la page
# d'accueil
accueilLigneHaut() {
    accueilColonne3Haut 
    sleep 1
    simulerAppui left
    sleep 1
    accueilColonne3Haut 
    sleep 1
    simulerAppui left
    sleep 1
    accueilColonne3Haut 
    sleep 1
    simulerAppui left
    sleep 1
    accueilColonne3Haut 
    sleep 1
    simulerAppui left
}

# Conduit sur l'item Telesite si l'on
# est sur la deuxieme ligne
accueilLigne2Gauche() {
    simulerAppui ok
    sleep 3
    simulerAppui red
    sleep 1
    simulerAppui left
    sleep 1
    simulerAppui ok
    sleep 3
    simulerAppui red
    sleep 1
    simulerAppui left
    sleep 1
    simulerAppui ok
    sleep 3
    simulerAppui red
    sleep 1
    simulerAppui left
    sleep 1
    simulerAppui ok
    sleep 3
    simulerAppui red
    sleep 10
    simulerAppui home
}

# Va dans le menu parametre
# quand le boitier est allume
gotoParam() {
    simulerAppui home
    sleep 5
    accueilLigneHaut
    sleep 1
    simulerAppui up
    sleep 1
    simulerAppui up
    sleep 1
    accueilLigne2Gauche
    sleep 1
    simulerAppui right
    sleep 1
    simulerAppui down
    sleep 1
    simulerAppui ok
}

# Va dans le menu info Reseau
# quand le boitier est allume
gotoInfoReseau() {
    gotoParam
    sleep 1
    # On va l'item disque dur du menu param
    simulerAppui up
    sleep 1
    simulerAppui left
    sleep 1
    simulerAppui up
    sleep 1
    simulerAppui left
    sleep 1
    simulerAppui up
    sleep 1
    simulerAppui left
    sleep 1
    # On est sur l'item disque dur
    # On va sur information reseau
    simulerAppui left
    sleep 1
    simulerAppui up
    sleep 1
    simulerAppui ok
}

# Redemarre le modem adsl si le
# boitier HD est allume
redemarrerAdslSiOn() {
    gotoInfoReseau
    sleep 1
    simulerAppui down 
    sleep 1
    # Ce ok lance le redemarrage
    simulerAppui ok
    # On ressort du menu
    sleep 1
    simulerAppui red 
    sleep 1
    simulerAppui red 
    sleep 1
    simulerAppui red 
}

case $1 in
     rebootAdsl)
        # Redemarre le modem adsl
        # dans tous les cas
        simulerAppui power
        sleep 5
        redemarrerAdslSiOn
        sleep 1
        simulerAppui power
        sleep 5
        redemarrerAdslSiOn
        ;;
    *)
        $0 rebootAdsl 
        ;;
esac

Dernière modification par Kysic (Le 08/05/2010, à 21:56)

Hors ligne

#2 Le 16/06/2010, à 13:06

guiguidu59

Re : [script/sh] reboot freebox à distance

Salut!

On cherche actuellement à faire cette action pour les aliceboxs V5 (presque pareil qu'une freebox V5), une idée?

Hors ligne

#3 Le 16/06/2010, à 13:15

Pacifick_FR42

Re : [script/sh] reboot freebox à distance

@Kysic heu... ça doit venir de moi, mais j'ai rien pigé... pour la méthode employé, il faut le boitier tv ? utiliser la télécommande ? bref...

Hors ligne

#4 Le 16/06/2010, à 18:04

Kysic

Re : [script/sh] reboot freebox à distance

guiguidu59 > Je ne sais pas du tout comment fonctionne un alicebox V5. Il faut regarder si la fonctionnalité de télécommande depuis le PC existe dessus et s'il est possible de la rebooter avec les menus freebox sur la télé.

Pacifick_FR42 > Il faut juste le boitier télé. Il faut savoir que free à activé une fonctionnalité permettant au périphérique (pc) connecté en Ethernet sur le réseau local de servir de télécommande pour la télé. Ainsi par exemple un téléphone connecté en wifi et avec la bonne appli peut servir de télécommande. L'idée est ici de se servir de cette fonctionnalité pour contrôler le boîtier HD.
Si un ordinateur est connecté sur le réseau locale de la freebox, il peut "télécommander" le boitier HD de la freebox, comme s'il appuyait sur les touches de la télécommandes. En fait il suffit pour cela d'appeler une page http en connaissant le "code télécommande" qui est visible dans le menu paramètre>informations générales du menu freebox sur la télé. (ce code est nécessaire pour des raisons de sécurité).
Donc comme il est possible de redémarrer le boiter adsl de la freebox via le menu freebox télé, juste avec le boîtier télé (pas forcément besoins d'une télé), on peut redémarrer la freebox depuis un pc (routeur) connecté sur le réseau locale.
Rq : mon script pourrait être amélioré mais c'étais surtout pour montrer le principe.
On pourrait également imaginer un script qui fait sonner le téléphone, ça peut être marrant...

Dernière modification par Kysic (Le 16/06/2010, à 18:09)

Hors ligne

#5 Le 16/06/2010, à 18:20

Slide16

Re : [script/sh] reboot freebox à distance

Bonjour tout le monde,
@Kysic: je suis un habitué du forum des Aliciens, et suite à un message de guiguidu59 je suis passé voir ici.

Alors oui, l'AliceBox (seulement V5 d'ailleurs) et une freebox dans une boite rouge marquée "Alice". Donc nous avons la possibilité d'avoir le code télécommande, et effectivement, le reboot du modem est une fonction disponible depuis les paramètres réseau, via le décodeur TV.

Le problème que l'on a, est que l'interface est spécifique (pas tout à fait la même que Free), et que notre décodeur, se met sur le dernier menu dans lequel on était avant de le mettre en veille.
Donc on ne se retrouve pas toujours dans le même menu, d'une fois sur l'autre, ce qui fait, qu'on ne sait pas d'où on part, donc on ne sait pas comment aller à coup sur, dans l'onglet "infos réseaux".

Je vais regarder ton code pour voir si on peut l'adapter à notre besoin (mais je suis novice en script bash, je me suis tout juste mit à linux avec une SLAX en USB BOOT depuis quelques semaines).

Dernière modification par Slide16 (Le 16/06/2010, à 20:45)


- Xav -

Hors ligne

#6 Le 16/06/2010, à 20:19

Kysic

Re : [script/sh] reboot freebox à distance

Oui, on a le même problème sur la freebox.
Il faut essayer les différents menu et voir ce qui diffère pour essayer de se caler à chaque fois.
Parfois il y a une ligne ou une colonne de plus dans un menu, ça permet de se caler en partie.
Dans les menus de la freebox hd, il y a également des différences lorsque l'on va dans une option du menu principal. Pour certaines on peut revenir au menu principal en appuyant sur la touche rouge et pour d'autre non. En gros il faut observer tout ce qui diffèrent dans la navigation des menus et qui pourrait permettre de se caler.
En combinant tout ça comme il faut (avec un peu de réflexion), on peut arriver à trouver la bonne suite de touche pour se caler toujours sur le même menu, après on fait ce que l'on veut (enfin attention parce que même dans les sous-menu la dernière position est mémorisée).
Ca sera peut être pas possible sur l'AliceBox, ça dépends des menus.
C'est clair que c'est pas très pratique mais j'ai pas trouvé d'autre solution.
Après si le boitier télé n'est pas utilisé autrement, on peu aussi mettre les menus dans la bonne position pour faire un script plus simple, mais il faudra les remettre à chaque fois qu'on les utilisera ce qui n'est pas très pratique.

Dernière modification par Kysic (Le 16/06/2010, à 20:20)

Hors ligne

#7 Le 16/06/2010, à 20:49

Slide16

Re : [script/sh] reboot freebox à distance

Oui je suis en train d'étudier ton script, et effectivement, il faut lister les menus et sous-menu, et trouver le moyen d'avoir un système pour se recaler à coup sur.
Ton script fonctionne bien avec l'AliceBox (ça simule la télécommande, et je vois le trucs se balader tout seul dans les menus devant moi), mais les menus diffèrent de la Freebox, donc tu ne retombe pas où il faut sad
Je vais maintenant essayer de dresser la carte du truc, pour trouver comment revenir toujours sur le menu réseau.
En tout cas, merci pour se script, c'est un très bon point de départ pour la version Alice.
Je vais tenter de le faire aboutir, je reviendrai poster mon code si j'y parviens.:rolleyes:

Dernière modification par Slide16 (Le 16/06/2010, à 20:50)


- Xav -

Hors ligne

#8 Le 19/06/2010, à 18:26

Slide16

Re : [script/sh] reboot freebox à distance

Alors, pour ce qui est de trouver un moyen d'arriver  à tous les coups sur le bon menu.. j'ai pas trouvé moyen de faire sur l'Alice comme sur la Free hmm

... quand la frappe chirurgicale ne marche pas, il reste la "méthode bourrin", aussi appelée "tuage de mouche au bazooka" tongue

En effet, on a que 4 menus, donc même sans savoir où on est, si on se déplace et qu'on lance la séquence à chaque fois, on est sur de passer où il faut.
Par contre, l'idée c'est de ne pas tout péter en lançant la séquence de touche du reboot, sans être dans le bon menu, et c'est là qu'il faut la jouer fine:
- certain sous-menu, quittent le menu lors d'un appui sur "rouge"
- le sous-menu "mon abonnement", du même menu que "infos réseaux", ne quitte pas lors d'un appui sur rouge (ça c'est cool)
- du coup, en utilisant la touche, "rouge", j'arrive à quitter 2 des 3 menus qui ne sont pas les bons, avant de lancer ma séquence de touche, qui n'a alors aucun effet (cool aussi)
- il reste juste le menu de la VOD, dans lequel je vais naviguer pour rien sans le savoir, mais sans faire de dégâts non plus (pas chez moi en tout cas)
==> c'est gagné !!! je lance le reboot dans les 4 menus, et dans les 3 qui ne sont pas bons, je ne fais pas de connerie pour autant ("la mouche est tuée, et le bazooka ne fais pas de dommages collatéraux").

J'ai repris le principe de la freebox, ne pouvant pas savoir si le décodeur est allumé ou éteint, je lance 2 reboot avec un power entre les 2.
J'ai testé les 2 cas extrêmes:
- décodeur déjà allumé (donc le script commence par l'éteindre) et avec le bon menu atteint en dernier
- décodeur éteint au départ et le bon menu atteint en premier

Pas de gros soucis, ça marche dans le 2 cas, par contre, dans le 2ème cas (toutes les bonnes conditions réunies au départ),  j'ai retrouvé la connexion avant la fin du script, donc ça a lancé un 2ème reboot.
Donc voilà, à tous les coups ça marche, des fois, ça marche trop bien... wink

#!/bin/sh

# Code télécommande
CODE_ALICEBOX=12345678
# Identifiant du boîtier HD
ID_BOITIER=1

# Simule un appui sur la touche $1
# Simule un appui long si $2 vaut "long"
# Liste keys :
#     power : la touche rouge on/off 
#     ok : touche OK 
#     up, right, down, left : les touches directionnelles entourant le OK 
#     home : la touche free 
#     red : le bouton rouge
simulerAppui() {
    if [ "$#" -eq 1 ]
    then 
        isLong=false
    else
        if [ "$#" -eq 2 ]
        then
            isLong=true
        else
            echo "Usage : simulerAppui <key> [long]"
            return 2
        fi
    fi
    wget -q -O /dev/null "http://hd${ID_BOITIER}.freebox.fr/pub/remote_control?code=${CODE_ALICEBOX}&key=${1}&long=${isLong}"
}

# enchaine une séquence "menu" "<-" "OK" "rouge"
# le déplacement permet d'avoir un nouveau menu à chaque fois (en 4 appels, on est sur d'être passé où il faut)
# et permet surtout d'être replacé sur le 1er élément du menu précédent
# le "OK" puis "rouge" pemet de ressortir du menu avant de lancer le reboot si pas au bon endroit 
# sauf depuis l'écran de la VOD mais rien de grave ne se passera (en tout cas, no soucy chez moi)
sequence_deplace() {
    simulerAppui home
    sleep 3
    simulerAppui left
    sleep 1
    simulerAppui ok
    sleep 1
    simulerAppui red
} 

# enchaine une séquence "haut" "OK" "bas" "OK"
# on se délace sur le dernier sous-menu (infos réseau) et on entre
# puis on descend et on valide ==> le reboot est lancé (si on était das le bon menu) 
sequence_reboot() {
    simulerAppui up
    sleep 1
    simulerAppui ok
    sleep 3
    simulerAppui down
    sleep 1
    simulerAppui ok
} 

# Redemarre le modem adsl
# en faisant 4 "déplacement + reboot"
# pour être sur de passer au moins une fois sur le bon menu
redemarrerAdsl() {
    sequence_deplace
    sleep 1
    sequence_reboot
    sleep 1
    sequence_deplace
    sleep 1
    sequence_reboot
    sleep 1
    sequence_deplace
    sleep 1
    sequence_reboot
    sleep 1
    sequence_deplace
    sleep 1
    sequence_reboot
}

case $1 in
     rebootAdsl)
	#cas 1: on allume le décodeur
	# cas 2: on éteind le décodeur
        simulerAppui power
        sleep 10
	# cas 1: on vient d'allumer, on lance le reboot
	# cas 2: on vient d'éteindre, le lancement de reboot se fait dans le gaz
        redemarrerAdsl
        sleep 1
	# cas 1: box en train de rebooter
	# cas 2: on avait éteind t là on rallume
        simulerAppui power
        sleep 10
	# cas 1: box en train de rebooter
	# cas 2: on vient d'allumer, on lance le reboot
        redemarrerAdsl
        sleep 1
        ;;
    *)
        $0 rebootAdsl 
        ;;
esac

Donc voilà, je vous laisse le tester, J'y ai passé tout l'après-midi à bidouiller ma télécommande pour tester des combinaisons de touches.
En espérant que ça pourra vous servir wink


- Xav -

Hors ligne

#9 Le 20/06/2010, à 22:52

nesthib

Re : [script/sh] reboot freebox à distance

euh… je n'ai pas de freebox pour tester mais ce ne serait pas plus malin (et plus simple) de trouver quelle requête est envoyée à la freebox lors du clic sur ton bouton dans le menu afin de l'envoyer en ligne de commande ?


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

#10 Le 18/12/2010, à 18:09

Kysic

Re : [script/sh] reboot freebox à distance

nesthib > Désolés de pas avoir répondu plus tôt, j'avais oublié ce topic en fait.
J'avais pensé à ta solution mais je n'avais pas de hub (pb des switchs basiques non configurables) pour capturer le traffic. De toute façon je crois que les deux boîtiers communiquent en IPsec donc c'est mort.
L'ihm des menus tv a un peu évolué depuis mon post me semble t'il, il y a peu de chance que le script fonctionne encore, faudrait le mettre à jour...
A ma connaissance toujours pas de nouvelle fonctionnalité de free pour rebooter sa freebox à distance. C'est dommage, eux sont bien capable de le faire, ils pourraient nous mettre un lien dans la console d'administration pour la rebooter ça leur couterait pas grand chose...
[troll]Peut être que leur nouvelle  freebox v6 pourra être rebootée à distance ??[/troll]

Dernière modification par Kysic (Le 18/12/2010, à 18:10)

Hors ligne

#11 Le 22/12/2010, à 04:00

nesthib

Re : [script/sh] reboot freebox à distance

pour comprendre les requêtes envoyées une simple analyse du code des pages de l'interface web devrait suffire (je crois savoir qu'il existe des menus cachés).
Sinon une capture est possible avec firefox ou wireshark


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

#12 Le 22/12/2010, à 19:26

Kysic

Re : [script/sh] reboot freebox à distance

nesthib > Je ne comprends pas de quoi tu parles.
Je pense que tu parle de l'interface web sur le site de free, dans ce cas là il n'y a pas de menu permettant de redémarrer la freebox, c'est là le problème.
Les seules solutions à ma connaissance pour redémarrer une freebox sont soit de lui couper l'alimentation, soit d'utiliser le menu TV.
Le menu TV n'est pas accessible (à ma connaissance) à partir d'un ordinateur, on ne peut pas récupérer les pages et les analyser (sauf dans le cadre du freeplayer où l'on héberge des pages sur un de notre ordi qui font office de menu sur la TV mais c'est autre chose).
On peut cependant espérer capturer le traffic entre la freebox hd et la freebox adsl pour voir où le boîtier HD récupère l'interface tv et surtout pour voir les trames déclenchant le reboot de la freebox.
Seulement pour cela il faut déjà posséder un hub (pour dupliquer le traffic ethernet vers son ordinateur si on veut avoir une chance de le capturer avec wireshark).
Mais surtout je pense que même avec hub cela n'ira pas plus loin car je crois le traffic entre la freebox HD et la freebox ADLS utilise IPsec, il est chiffré . On ne pourra donc pas exploiter les trames capturés ni les rejouer pour faire rebooter le boîtier ADSL.
Mais si tu as plus d'infos je suis preneur...

Hors ligne

#13 Le 07/01/2011, à 22:43

Kysic

Re : [script/sh] reboot freebox à distance

Bon je viens de voir qu'apparemment avec la freebox v6 on aura une interface web locale qui permettre de rebooter :
http://www.freenews.fr/spip.php?article9662
Dommage que je n'ai pas l'intention de changer de freebox...

Hors ligne

#14 Le 08/01/2011, à 03:31

Pacifick_FR42

Re : [script/sh] reboot freebox à distance

Oui, moi aussi, je vais attendre un peu (j'ai quelques installations à faire dans mon agenda wink ) mais l'offre de gratuité des appelles vers les portables est séduisante...

Hors ligne

#15 Le 08/01/2011, à 09:42

HP

Re : [script/sh] reboot freebox à distance

Kysic a écrit :

[…] apparemment avec la freebox v6 on aura une interface web […]

Ouah ! trop fort ! Une révolution ! (mouarf)
Ça fait 10 ans, au moins, que n'importe quel routeur à 50€ sait faire la même chose…

Dernière modification par HP (Le 08/01/2011, à 09:44)


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#16 Le 08/01/2011, à 16:53

Pacifick_FR42

Re : [script/sh] reboot freebox à distance

HP a écrit :
Kysic a écrit :

[…] apparemment avec la freebox v6 on aura une interface web […]

Ouah ! trop fort ! Une révolution ! (mouarf)
Ça fait 10 ans, au moins, que n'importe quel routeur à 50€ sait faire la même chose…

Je pense pas que c'était le but du message, il ne s'agit pas de souligner une quelconque "prouesse", simplement de souligner quelque chose qui n'existait pas sous free et qui est quant même bien pratique ! wink

Hors ligne

#17 Le 04/04/2014, à 10:47

kidou

Re : [script/sh] reboot freebox à distance

Bonjour,
Comme beaucoup de personnes peuvent tomber sur ce post (comme moi qui en ai eu besoin) et au vu des changements dans l'interface de la freeboxHD, je me suis permis de reprendre le script original et de l'adapter pour le faire fonctionner dans tous les cas sur une freeboxHD avec le nouveau menu de la freeboxCrystal (à la date de début 2014).

Si ça peut en aider plus d'un wink

Cordialement,
Kidou

#!/bin/sh
#
# Script bash permettant de redemarrer la Freebox boitiers ADSL & HD
# Par Kidou d'apres une idee de Kysic (Forum Ubuntu-fr)

# Code telecommande accessible dans le menu
# "Informations generales" de la freebox hd
CODE_FREEBOX=""

# Identifiant du boitier HD
ID_BOITIER=1
HOST="hd${ID_BOITIER}.freebox.fr"

# Simule un appui sur la touche $1
# Simule un appui long si $2 vaut "long"
# Liste keys :
#     power : la touche rouge on/off
#     list : la touche d'affichage de la liste des chaines entre power et tv
#     tv : la touche verte TV de commutation peritel.
#     0 a 9 : les touches 0 a 9
#     back : la touche jaune en dessous du 7
#     swap : la touche en dessous du 9
#     info, mail, help, pip : les touches bleues a droite des numŽros de chaine
#     epg, media, options : fonctionnalites "secondaires" de ces memes touches
#     vol_inc, vol_dec : volume+ et volume-
#     prgm_inc, prgm_dec : program+ et program-
#     ok : touche OK
#     up, right, down, left : les touches directionnelles entourant le OK
#     mute : la touche de mise en sourdine
#     home : la touche free
#     rec : la touche d'enregistrement
#     bwd : la touche de retour en arriere (<<)
#     prev : la touche "precedent" (|<<)
#     play : la touche lecture/pause
#     fwd : la touche d'avance rapide (>>)
#     next : la touche "suivant" (>>|)
#     red : le bouton rouge (B)
#     green : le bouton vert (A)
#     yellow : le bouton jaune (Y)
#     blue : le bouton bleu (X)

usage(){
	echo  "Usage : $0 <box>"
	echo  "box :"
	echo  "             adsl : redemarre le boitier adsl"
	echo  "             hd   : redemarre le boitier hd - reset les pages et curseur"
	echo  ""
}

# Forge et lancement de la commande wget
appui() {
	if [ "$#" -eq 1 ]
	then
		isLong=false
	else
		if [ "$#" -eq 2 ]
		then
			isLong=true
		else
			echo "Usage : appui <key> [long]"
			return 2
		fi
	fi
	sleep 1 && wget -q -O /dev/null "http://${HOST}/pub/remote_control?code=${CODE_FREEBOX}&key=${1}&long=${isLong}"
}

# reste sur la première ligne si première colonne grace au double bouton Canal+
gopremiereligne(){
	# se déplace vers le bas par la droite, immobile si TV
	appui right && appui down && appui left
	appui right && appui down && appui left
	appui right && appui down && appui left
}

# se place sur la seconde ligne
gosecondeligne(){
	# cherche première ligne pour chacune des 4 colonnes
	gopremiereligne && appui left
	gopremiereligne && appui left
	gopremiereligne && appui left
	gopremiereligne
	# passe à la seconde ligne par en bas à cause du double bouton Canal+
	appui up && appui up
}

# va dans le menu Param (delay aggrandi pour chargement plus long TVperso et Replay)
goparam(){
	# se place sur la seconde ligne
	gosecondeligne
	# cherche le menu Replay (le seul à ne pas sortir via Red)
	appui ok && sleep 2 && appui red && appui left
	appui ok && sleep 2 && appui red && appui left
	appui ok && sleep 2 && appui red && appui left
	appui ok && sleep 2 && appui red && sleep 5 && appui home
	# ouvre le menu Param
	appui left && appui left && appui down && appui ok
	# se place sur Affichage
	appui right && appui right && appui right && appui up
	appui right && appui right && appui right && appui up
	appui right && appui right && appui right && appui up
	appui right && appui right && appui right && appui up
}

# Relance la Box ADSL
relanceadsl(){
	# ouvre le menu Param/Réseau
	appui home && goparam && appui right && appui right && appui ok
	# Redémarrage de la Box ADSL
	appui down && appui ok
	# retour et mise en veille HD
	appui red & appui red && appui red && appui power && sleep 10
}

# Relance la Box HD
relancehd(){
	# ouvre le menu Param/Général
	appui home && goparam && appui right && appui ok
	# Redémarrage de la Box HD
	appui down && appui ok
	# retour et mise en veille HD
	appui red & appui red && appui red && appui power && sleep 10
}

if [ -z $CODE_FREEBOX ]
then
	echo "Erreur : la variable CODE_FREEBOX n'est pas configure\n"
	echo "Boitier HD : Menu Parametres -> Informations generales\n"
	exit 2
fi

case $1 in
adsl)
	# on exécute 2 fois car dans l'un des 2 cas la box HD sera éteinte
	relanceadsl
	relanceadsl
	;;
hd)
	# on exécute 2 fois car dans l'un des 2 cas la box HD sera éteinte
	relancehd
	relancehd
	;;
*)
	usage
	exit 1
	;;
esac
exit 0

Hors ligne

#18 Le 28/05/2014, à 19:33

hendrix

Re : [script/sh] reboot freebox à distance

Kidou je tenais à te remercier pour ton script. J'aurais juré que c'était impossible et pourtant ça marche.

Hors ligne