Un truc de ce genre ?
(la syntaxe doit être fausse, mais le principe est de tester si up a
changé d'état)

#!/bin/sh

ping -q 192.168.1.3 > /dev/null

if [ $? -ne 0 ]
then
        if [ up=1 ]
                cp dhcp_succes.conf dhcpd.conf | systemctl restart dhcpd
                up=0
        fi
else
        if [ up=0 ]
                cp dhcp_failover.conf dhcpd.conf | systemctl restart dhcpd
                up=1
        fi
fi





Le 07/03/2019 à 13:00, [email protected] a écrit :
> 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
>>
>
>

-- 
Installer facilement GNU/Linux : http://numopen.fr

    .--.
   |o_o |
   ||_/ |
  //    \\    Envoyé avec mon GNU/Linux
 (|      |)
/ \_   _/ \
\___)=(___/

_______________________________________________
libre mailing list
[email protected]
https://brassens.heberge.info/cgi-bin/mailman/listinfo/libre

Répondre à