Je vais reprendre le script ce soir car sur le téléphone je ne peux pas tester mais j'ai noté des pistes dans vos réponses.
----- Original Message ----- From: [email protected] To: "Liste de discussion Graoulug" <[email protected]> Sent: Thursday, March 7, 2019 1:00:04 PM Subject: Re: [graoulug-libre] Script bash Bonjour, merci pour votre aide, j'en ai bien besoin. Concrètement il y a 2 serveurs dhcp, l'un sous Windows ( 192.168.1.3 ) et l'autre sous Linux. Je me concentre sur le serveur Linux. En marche normale chacun des 2 serveurs adressent une plage IP bien définie. Mais si le serveur Windows tombe mon serveur Linux doit adresser les 2 plages. Dans l'idée mon scprit devrait avoir cette allure: #!/bin/sh ping -q 192.168.1.3 > /dev/null if [ $? -ne 0 ] then up=0 else up=1 if up=0 then cp dhcp_succes.conf dhcpd.conf | systemctl restart dhcpd else cp dhcp_failover.conf dhcpd.conf | systemctl restart dhcpd fi En l'état le serveur est tout le temps relancé car il faut que le serveur Linux revienne à sa plage d'origine quand le serveur Windows repart. ----- Original Message ----- From: "Christophe HENRY" <[email protected]> To: [email protected] Sent: Thursday, March 7, 2019 10:43:17 AM Subject: Re: [graoulug-libre] Script bash Aucune idée, il faut Jacky donne plus d'information. En fonction des contraintes, j'adopterais des solutions très différentes. Ici, les principaux écueils me semblent être la réentrance − script lancé alors qu'il est encore en exécutation − la mémorisation de l'état antérieur et l'application des modifications de configuration. S'il faut relancer le service modifié, il faut le faire à bon escient. Là, peut-être inotify pourrait aider. Ou alors une écriture complète en Python. Le Thu, 7 Mar 2019 10:37:07 +0100, David VANTYGHEM <[email protected]> a écrit : > Je ne sais pas si j'ai bien compris le problème. Est-ce que mettre à > jour une variable et tester son changement d'état irait ? > > > Le 07/03/2019 à 10:21, Christophe HENRY a écrit : > > Le Wed, 6 Mar 2019 22:31:29 +0100 (CET), > > [email protected] a écrit : > > > >> Salut tout le monde, > >> > >> J'ai fait un petit script pour tester si un serveur est en ligne > >> sur un réseau. Si le serveur est en ligne un fichier de conf prend > >> un certain contenu, dans le cas contraire il prend un autre > >> contenu. Jusque là c'est simple. Le problème c'est de faire en > >> sorte que le fichier de conf ne reçoive pas le contenu en > >> permanence. Est-ce que ce genre de problème parle à quelqu'un? > > À vue de nez, ton script doit mémoriser le dernier état mesuré. Il > > y a un changement d'état, quand le serveur passe de "en-ligne" à > > "hors-ligne" ou le contraire. Dans ce cas, il faut mettre à jour le > > fichier de configuration en fonction de l'état du serveur. > > > > Exemple en pseudo-code Python. > > > > """"""""""""""""""""""""""""""""""""""""" > > #/usr/bin/python3 > > serveurÉtaitEnLigne = False > > > > enLigne = testeEnLigne() # Retourne True si le serveur est en ligne, > > # False sinon. > > > > if enLigne != serveurÉtaitEnLigne: > > serveurÉtaitEnLigne = enLigne > > if enLigne: > > configuration = "Configuration pour en ligne" > > else: > > configuration = "Configuration pour hors ligne" > > """"""""""""""""""""""""""""""""""""""""" > > > > En bash, tu peux créer un fichier pour mémoriser l'état (mktemp par > > ex.) et utiliser flock pour éviter la réentrance si la requête > > réseau tarde trop. > > > > > > _______________________________________________ > > libre mailing list > > [email protected] > > https://brassens.heberge.info/cgi-bin/mailman/listinfo/libre > > -- Christophe HENRY FR EO EN - http://sbgodin.fr _______________________________________________ libre mailing list [email protected] https://brassens.heberge.info/cgi-bin/mailman/listinfo/libre _______________________________________________ libre mailing list [email protected] https://brassens.heberge.info/cgi-bin/mailman/listinfo/libre _______________________________________________ libre mailing list [email protected] https://brassens.heberge.info/cgi-bin/mailman/listinfo/libre
