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

Répondre à