wanou Posté(e) le 14 août 2004 Partager Posté(e) le 14 août 2004 Je cherche à réaliser soit un script shell, soit un script en perl qui sera appelé par cron tous les 1/4 d'heure pour réaliser un ping sur ma connection internet. Si le ping ne donne pas de résultat, un message est envoyé sur le port série et un montage électronique que je prépare réalise un arrêt/marche de la freebox. j'ai trouvé comment faire un seul ping mais je ne vois pas comment analyser la réponse de ping (je pense qu'il faut utiliser un pipe avec grep mais je bute sur le test) En ce qui concerne le port série, j'ai réussi à configurer correctement la vitesse et à envoyer le message de test donc pas de problème de ce côté là. Merci par avance. Mise à jour: Vous trouverez dans ce topic: 1) comment fabriquer très façilement un rebooteur de freebox: Ma freebox est une version 2 et il se trouve qu'elle perd la synchronisation de temps à autre. C'est pour cette raison que je me suis lancé dans la réalisation de cela. 2)un script bash permettant s'il est appelé toutes les minutes par cron de vérifier l'état d'une connexion réseau et qui écrit dans un fichier journal les dates et durées de coupures s'il y en a. Lien vers le commentaire Partager sur d’autres sites More sharing options...
SyGEN Posté(e) le 17 août 2004 Partager Posté(e) le 17 août 2004 Si tu pouvais donner 2 exemples de trames d'entrée (une ping OK et l'autre ping NOK) et le resultat que t'aimerais avoir en sortie pour envoyer ca serait plus judicieux. Lien vers le commentaire Partager sur d’autres sites More sharing options...
wanou Posté(e) le 17 août 2004 Auteur Partager Posté(e) le 17 août 2004 c'est vrai que sans cahier des charges complet, c'est pas facile OK, voici le résultat du ping -c 1 -w 2 -r -q ww.xx.yy.zz (l'adresse de l'ordinateur du provider): dans ce qui suit, aa.bb.cc.dd est mon adresse ip. Si liaison ok: PING ww.xx.yy.zz (ww.xx.yy.zz) from aa.bb.cc.dd : 56(84) bytes of data. --- ww.xx.yy.zz ping statistics --- 1 packets transmitted, 1 received, 0% loss, time 0ms rtt min/avg/max/mdev = 28.348/28.348/28.348/0.000 ms Si liaison ko: PING ww.xx.yy.zz (ww.xx.yy.zz) from aa.bb.cc.dd : 56(84) bytes of data. --- ww.xx.yy.zz ping statistics --- 2 packets transmitted, 0 received, +1 errors, 100% loss, time 1013ms Si la liaison est ko, j'envoie AT+REBOOT sur le port série (avec retour chariot). là, un echo "AT+REBOOT" > /dev/cua0 devrait faire l'affaire. Je pense qu'il faut chopper le motif "% loss" et récupérer le chiffre devant. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Poulpatine Posté(e) le 19 août 2004 Partager Posté(e) le 19 août 2004 je te sors le truc vite fait, là je peux pas tester mais un truc du genre while true do if ! (ping -c 1 ww.xx.yy.zz ) then echo "AT+REBOOT'\n' >> /dev/cuao" fi sleep 30 done explication : -la commande ping retourne -1 ( ou false ) lorsque qu'elle ne s'execute pas correctement ;-) - while true permet de créer une boucle infinie ;-) donc, ne pas oublier le sleep 30 donc en algo ca donnerait tant que vrai = vrai si ping -c 1 ww.xx.yy.zz est faux alors afficher "AT+REBOOT'\n' >> /dev/cuao" finsi attendre 30 secondes fin tantque edit : petite modif a laquelle j'ai pensé pendant que je mangeais ;-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
wanou Posté(e) le 20 août 2004 Auteur Partager Posté(e) le 20 août 2004 Merci Poulpatine , le test foctionne bien. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Poulpatine Posté(e) le 20 août 2004 Partager Posté(e) le 20 août 2004 Yes, c'est top si ça marche ;-) \o/ Cool \o/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
wanou Posté(e) le 21 août 2004 Auteur Partager Posté(e) le 21 août 2004 par contre, j'ai beau chercher dans le man de bash et faire des help, je ne vois pas comment ajouter une variable d'environnement. sur un shell cmd.exe, il suffit de faire un "SET MA_VARIABLE=la_valeur" mais là, je ne vois pas en plus, je cherche à donner comme contenu à cette variable, le résultat de la ligne suivante qui me donne automatiquement l'adresse ip de la machine distante: arp -eni eth1 | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" si je fait une redirrection, cela ne marche qu'avec un fichier et pas une variable. quelqu'un à une idée? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Poulpatine Posté(e) le 21 août 2004 Partager Posté(e) le 21 août 2004 pour définir des variables d'environnement : export TEST="TEST" ou bien env TEST="TEST" aprés je sais pas comment définir le résultat de ta commande en variable d'environnement, faudrait faire qques test ou alors viens sur le forum linux et viens dans le linux bar poser ta question Lien vers le commentaire Partager sur d’autres sites More sharing options...
wanou Posté(e) le 29 août 2004 Auteur Partager Posté(e) le 29 août 2004 J'ai posé la question dans le linux bar, tuXXX et gauret ont eu la gentillesse de me donner l'info. J'ai également buté sur un autre problème que j'ai résolut moi-même: j'avait appelé l'utilitaire arp dans mon scripte pour récupérer automatiquement l'adresse ip de la machine connectée de l'autre côté de la liaison adsl et cela ne fonctionnait pas quand le script était appelé par cron en mode non interractif. Le path semble ne pas exister en mode non interractif ce qui m'à obligé à écrire le chemin complet: /sbin/arp voici donc mon script temporaire car la fonction reboot ne sera implémentée qu'après la finalisation de la carte électronique que je prépare. #test de la liaison adsl lancé toutes les 10 minutes par cron #configuration de la vitesse de com de l'uart a 38400bps stty -F /dev/cua0 ispeed 38400 ospeed 38400 #effacement de l'ecran et ecriture de la date en 1ere ligne (16 cars par ligne) echo -n -e "\011" > /dev/cua0 date +%e/%m/%Y\ %Hh%M > /dev/cua0 #passage en 2eme ligne pour écrire la suite echo -n -e "\010\300" > /dev/cua0 #obtention de l'adresse ip distante sur l'interface reseaux eth1 #la première adresse IP trouvée est celle du routeur de chez free DIST_IP=$(/sbin/arp -eni eth1 | grep -Em 1 -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+') #on récupère l'état du service au dernier ping #si le fichier n'existe pas encore, on pare du principe que la liaison est #bonne if !(test -s /root/etat_adsl) then ETAT_SERVICE="OK" else ETAT_SERVICE=$(cat /root/etat_adsl) fi #préparation du fichier log si c'est la première utilisation if !(test -s /root/adsl.log) then echo "Suivit de l'état de la connection adsl" > /root/adsl.log fi #test par ping: l'option -w permet de reduire le time-out a 2 secondes #pour eviter que le test s'eternise en cas de liaison KO if !(ping -r -c 1 -w 2 -q $DIST_IP > /dev/nul) then echo -n -e "ADSL KO " > /dev/cua0 #si le service vient de s'arrêter, on écrit l'heure dans le log if [ $ETAT_SERVICE == "OK" ] then echo -n "service non disponible:" >> /root/adsl.log date +%e/%m/%y\ %Hh%M >> /root/adsl.log echo -n "KO" > /root/etat_adsl fi else echo -n -e "ADSL OK " > /dev/cua0 #si le service vient de reprendre, on l'écrit dans le log avec l'heure if [ $ETAT_SERVICE == "KO" ] then echo -n "reprise du service internet:" >> /root/adsl.log date +%e/%m/%y\ %Hh%M >> /root/adsl.log echo -n "OK" > /root/etat_adsl fi fi vos commentaires sont les bien venus Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 9 octobre 2004 Partager Posté(e) le 9 octobre 2004 Wanou, est ce que tu pourra mettre le montage ici ça poura interressser du monde (au moins deux personnes). Merci. Lien vers le commentaire Partager sur d’autres sites More sharing options...
wanou Posté(e) le 9 octobre 2004 Auteur Partager Posté(e) le 9 octobre 2004 ok, dès qu'il sera réalisé (manque de temps pour aller vite), je mettrai ici les schémas, photos, programmes qui vont bien. Lien vers le commentaire Partager sur d’autres sites More sharing options...
chattanooga Posté(e) le 10 octobre 2004 Partager Posté(e) le 10 octobre 2004 genial ton code ouai le montage m'interesse aussi, en tout cas ta fait du beau boulot Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sonix Posté(e) le 12 octobre 2004 Partager Posté(e) le 12 octobre 2004 pareil, ca m'interesse bcp. Lien vers le commentaire Partager sur d’autres sites More sharing options...
wanou Posté(e) le 19 octobre 2004 Auteur Partager Posté(e) le 19 octobre 2004 oyez, oyez, braves gens, le montage avance! J'ai opté pour la modif d'un matériel existants plutôt que pour la création à partir de 0 d'une prise commandée par port série. J'ai trouvé tout ce qu'il faut sur le catalogue sélectronic (ils font de la VPC aussi). C'est de la pub gratos mais j'ai pas vraiment le choix. Voici la liste des choses les plus importantes à obtenir avec la référence sélectronic correspondante: prise télécommandée sans fil: 50.0151-2 (l'unité 8,9 euros ttc). 20cm de fil type KY30-04: 50.9635-10 (pour 10m, 2 euros ttc). 6cm de gaine thermo-rétractable diamètre 9,5mm: 50.9558 (pour 1m, 4,5 euros ttc). un bout de plaque d'essai pastillée 3 de larges 10 pastilles de longueur: 50.3188 (50*100mm, 2 euros ttc). un opto-coupleur cny17-2 ou équivalent: 50.7934 (0,4 euros ttc). pour ceux qui ne peuvent pas mettre la main sur un cny17-2: il est IMPERATIF que l'opto-coupleur tienne AU MOINS 3750V d'isolation et il faut un taux de transfert en courant de 80% mini. 1 condensateur chimique radial 100µF 10V: 50.6735-2 (lot de 2, 0,4 euros ttc). une résistance de 1kilo ohm: 50.4562-10 (lot de 10, 0,6 euros ttc). une diode 1N4148: 50.3992-10 (lot de 10, 0,5 euros ttc). total: 19,3 euros. et pour finir: Un fil de souris série (les vieilles souris série ne manquent pas), avec sa prise sub-d 9 broches. Il vous faudra bien sur posséder le petit matériel de base: -> fer à souder à pointe fine -> soudure de diamètre 0,5mm maximum (perso c'est du 0,35mm) -> de la tresse à déssouder de bonne qualité (ex: soder-wick 1,5mm 50.9293-, et de largeur 2mm maximum (sinon, stress des pistes assuré) -> un briquet ou un sèche-cheveux pour la gaine termo-rétractable. -> un tournevis cruciforme et un tournevis plat à embout suite au prochain épisode. (modif du 17/01/05: la référence de l'opto-coupleur à été corrigée) Lien vers le commentaire Partager sur d’autres sites More sharing options...
nonas Posté(e) le 19 octobre 2004 Partager Posté(e) le 19 octobre 2004 Juste pour savoir, un reboot freebox ça s'opère comment (à part en débranchant/rebranchant la bête ?) Parce que je pensais que puisque la freebox fait tourner un linux (en gros) on pourrait se servir de la connection la reliant nativement au pc (USB ou Ethernet) pour la rebooter. Vous comprenez ? Par contre, le problème majeur doit être de trouver de la doc relative à la freebox et de savoir si elle accepterait un signal de reboot distant... Enfin je dis peut-être des grosses bêtises Lien vers le commentaire Partager sur d’autres sites More sharing options...
wanou Posté(e) le 19 octobre 2004 Auteur Partager Posté(e) le 19 octobre 2004 première étape: ouverture et modif de la prise commandée. il faut se munir d'un tournevis cruxiforme et d'un tournevis plat spécial dotté d'un creux dans la méplat pour les vis de sécurité (on peut dire aussi à la con). Il est assez facile de créer soi-même le tournevis en question avec un vieux tournevis plat et une lime: après ouverture, il faut réaliser quelques modifs sur la carte: 1 - en Bleu: couper la piste qui vient du circuit intégré vers la led. 2 - en Vert: ponter la led vers la sortie 5V du 78L05. 3 - en Rouge: désouder C13 et souder en lieu et place 2 fils de 4cm. voici ce que cela donne côté composants: rendez vous au prochain épisode pour la préparation de la carte ajoutée Lien vers le commentaire Partager sur d’autres sites More sharing options...
wanou Posté(e) le 19 octobre 2004 Auteur Partager Posté(e) le 19 octobre 2004 Juste pour savoir, un reboot freebox ça s'opère comment (à part en débranchant/rebranchant la bête ?)Parce que je pensais que puisque la freebox fait tourner un linux (en gros) on pourrait se servir de la connection la reliant nativement au pc (USB ou Ethernet) pour la rebooter. Vous comprenez ? Par contre, le problème majeur doit être de trouver de la doc relative à la freebox et de savoir si elle accepterait un signal de reboot distant... Enfin je dis peut-être des grosses bêtises nonas -> la solution du reboot par la prise électrique est la seule que je connaisse personellement et cela fonctionne bien. Etant électronicien de proffession, cette solution est très simple pour moi. Si tu as des infos pour le faire autrement, je pense que pas mal de monde est intéressé. Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 19 octobre 2004 Partager Posté(e) le 19 octobre 2004 Nonas : Avec la prise télécommandée peut être ? (EDIT : Trop tard ) C'est clair que ce serait cool le ssh sur la freebox, mais ils ne veulent peut être pas qu'on tripote là dedans. Lien vers le commentaire Partager sur d’autres sites More sharing options...
nonas Posté(e) le 19 octobre 2004 Partager Posté(e) le 19 octobre 2004 nonas -> la solution du reboot par la prise électrique est la seule que je connaisse personellement et cela fonctionne bien.Etant électronicien de proffession, cette solution est très simple pour moi. :8 Si tu as des infos pour le faire autrement, je pense que pas mal de monde est intéressé. Donc en gros le montage en question ici écoute le port série et si besoin est, fait un reboot électrique de la freebox ? (il coupe le jus quoi ) Non désolé, j'ai pas d'infos là-dessus, c'est juste une idée qui me passait par la tête. Nonas : Avec la prise télécommandée peut être ?C'est clair que ce serait cool le ssh sur la freebox, mais ils ne veulent peut être pas qu'on tripote là dedans. C'est vrai que le ssh sur la freebox ça pourrait être sympa mais en effet ça doit pas être dans l'intérêt de Free de documenter la bestiole... Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 19 octobre 2004 Partager Posté(e) le 19 octobre 2004 Enfin, un petit ssh en user restrein avec aucun droit, juste reboot et 2 3 autres trucs Lien vers le commentaire Partager sur d’autres sites More sharing options...
wanou Posté(e) le 19 octobre 2004 Auteur Partager Posté(e) le 19 octobre 2004 deuxième étape: préparation de la carte qui reçevra l'opto-coupleur. la plaque neuve: Il vas falloir en retirer un bout de 3 pastilles sur 10 en coupant avec un cutter. commencer par tracer la découpe en utilisant le côté tranchant de la lame: puis utiliser le bord non tranchant du cutter comme ceci: pour obtenir un meilleur résultat et une lame non abimée: une fois l'opération menée correctement sur les deux faces (une bonne profondeur des sillons est requise), on peut terminer la travail à la main ou à l'aide d'une pince plate en tordant la plaque sur le sillon. normalement la plaque se déchire sans forcer suivant le tracé: Il faut maintenant enlever quelques pastilles pour assurer une isolation galvanique conforme à la norme IEC1010. Pour décoller les pastilles: -> prendre un fer à souder et le faire chauffer au max (400° min pour les fers thermostatés). -> pour chaque pastille, planter la pointe du fer dans le trou de la pastille pendant 1 seconde (pas plus), en appuyant légèrement. Voila le résultat: la suite demain si tout vas bien. Lien vers le commentaire Partager sur d’autres sites More sharing options...
wanou Posté(e) le 20 octobre 2004 Auteur Partager Posté(e) le 20 octobre 2004 Episode 3: Une petite étude du schéma qui suit montre l'extrème complexité du problème et donne une idée du nombre d'heures passées à créer cette merveille! montage des composants sur la cartelette - La capacité peut être montée verticalement si c'est une 6,3V sinon, il faudra la monter couchée. Dépasser 10V pour la capacité augmentera la place occupée et rendra impossible la mise en boîte. - La résistance est montée à la japonaise c'est à dire verticalement. - La diode est montée également verticalement (j'ai utilisé une led pour me permettre de valider le concept). voila ce que cela donne: et on peut en suite: 1 - souder les fils venants de la prise. 2 - placer 5cm de gaine thermo-rétractable le long du cordon série. 3 - souder les deux fils qui viennent de la prise sub-D. 4 - placer la gaine au niveau du montage (la gaine doit dépasser pas mal du côté prise série). 5 - faire se rétracter la gaine avec de préférence un sèche cheveux ou un décapeur thermique. Pour les adeptes du briquet: ne pas approcher la flame trop près de la gaine, il faut donc avoir le briquet à côté de le gaine et pas en dessous. un petit rappel: PAS DE SCOTCH D'ELECTRICIEN à la place de la gaine thermo. on obtient cela: préparation du trou pour passer le fil série L'instrument idéal pour cela est une lime queue de rat. Si vous n'êtes pas l'heureux possesseur ce cet outils, essayez dans l'ordre: - une autre lime. - un cutter (bon courrage ). - le fer à souder (très sale mais ça marche ). La gaine thermo rétractable doit dépasser et vas être poincée, ne pas oublier donc de donner un coup de lime à plat autour du trou (léger quand même). et voila le travail! Montage final si tout c'est bien passé, la longeur de la cartelette et des composants qui dépassent un peu ne doit pas dépasser l'espace entre la diode et le bord du boitier. il ne reste plus qu'à refermer le tout (la gaine thermo doit être pincée, c'est important pour la tenue mécanique et pour l'isolation). il faut impérativement remettre les 4 vis donc les deux vis bizzares. Un petit plus pour ceux qui peuvent avoir à leur disposition un testeur d'isolement (appelé également mégommètre ou gigommètre): - prendre une fiche sub-d mâle. - souder ensemble les neufs points de la fiche sub-d mâle. - connecter cette prise au câble série de notre montage. - mesurer la résistance entre le côté série (les neufs points en même temps donc), et les deux plots de la prise mâle secteur. - la mesure doit se faire en calibre 500V ou 1000V et doit donner au moins 4 méghom. On peut également utiliser un diélectrimètre (le top), et mesurer le courant de fuite à 3750V alternatif pendant 1 minute: il ne doit pas dépasser 1mA. Pour ceux qui ne possèdent pas tous ceci, si vous avez réspecté les consignes, tout se passera bien . Rendez vous au prochain épisode pour la partie logicielle. Lien vers le commentaire Partager sur d’autres sites More sharing options...
wanou Posté(e) le 20 octobre 2004 Auteur Partager Posté(e) le 20 octobre 2004 Episode 4 voici mon script modifié: #test de la liaison adsl lance toutes les 10 minutes par cron #configuration de la vitesse de com de l'uart a 300bps stty -F /dev/cua0 ispeed 300 ospeed 300 #obtention de l'adresse ip distante sur l'interface reseaux eth1 #la première adresse IP trouvée est celle du routeur de chez free DIST_IP=$(/sbin/arp -eni eth1 | grep -Em 1 -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+') #on récupère l'état du service au dernier ping #si le fichier n'existe pas encore, on part du principe que la liaison est #bonne if !(test -s /root/etat_adsl) then ETAT_SERVICE="OK" else ETAT_SERVICE=$(cat /root/etat_adsl) fi #préparation du fichier log si c'est la première utilisation if !(test -s /root/adsl.log) then echo "Suivit de l'état de la connection adsl" > /root/adsl.log fi #test par ping: l'option -w permet de reduire le time-out a 2 secondes #pour eviter que le test s'eternise en cas de liaison KO if !(ping -r -c 1 -w 2 -q $DIST_IP > /dev/nul) then #si le service vient de s'arrêter, on écrit l'heure dans le log if [ $ETAT_SERVICE == "OK" ] then echo -n "service non disponible:" >> /root/adsl.log date +%e/%m/%y\ %Hh%M >> /root/adsl.log echo -n "KO" > /root/etat_adsl fi #on envoie pleins de caractères espace, ce qui éteint la prise de courant echo " reboot de la freebox" >> /root/adsl.log echo " " > /dev/cua0 else #si le service vient de reprendre, on l'écrit dans le log avec l'heure if [ $ETAT_SERVICE == "KO" ] then echo -n "reprise du service internet:" >> /root/adsl.log date +%e/%m/%y\ %Hh%M >> /root/adsl.log echo -n "OK" > /root/etat_adsl fi fi et voila, en cas d'absence de réponse au ping, votre freebox redémarre. Un dernier conseil pour finir: la durée entre deux appels successifs du script ne doit pas être inferieure à la durée max d'établissement de la connection par la freebox. Les mises à jour prennent un peu de temps, c'est pourquoi j'ai choisi 10 minutes. Il est possible d'utiliser un cordon de souris bimode PS2/série, ce qui permettra de commander la prise à partir d'un montage perso en préparation un peu plus intelligent mais qui demande plus de compétences en électronique. C'est tout! Lien vers le commentaire Partager sur d’autres sites More sharing options...
nonas Posté(e) le 21 octobre 2004 Partager Posté(e) le 21 octobre 2004 Super boulot, je pense que ça pourra servir à quelques un. Il faudrait que tu changes le titre de ton topic pour indiquer la présence du tuto Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 21 octobre 2004 Partager Posté(e) le 21 octobre 2004 Super idée. C'est certain que ça va servir à beaucoup de monde. Déjà un pote et moi on va tester ça dans pas lontemps. J'ai vu aussi une autre personne intéressée sur le forum, mais je ne sais plus qui. En tout cas wanou Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.