Aide ScriptShell :(

GreG -  
 GreG -
Bonjour,

Je cherche a faire un script-shell qui ping une ip et puisse lancé une application si l'ip ne ping plus , ou arrete cette application si l'ip ping de nouveau .
Ex: l'ip 192.X.X.X ping alors le script ne lance rien.
l'ip 192.X.X.X ne ping plus alors le script lance une application.
l'ip 192.X.X.X ping de nouveau alors le script stoppe l'application lancé precedement.

Voila si quelqu'un serait m'aider je l'en remercie d'avance .

Cordiallement.

GreG

25 réponses

  • 1
  • 2
  1. eric
     
    Salut,

    ping -c 1 -q 192.168.1.1 > /dev/null && echo "ca marche" || echo "ca marche pas"

    Et tu peux mettre le tout dans une boucle.

    a+

    eric
    0
  2. GreG
     
    Merci Eric , j'aimerais egalement qu'il lance une application lorsque cela ne fonctionne pas .

    Cordiallement.

    GreG
    0
  3. eric
     
    Même principe, mais tu remplaces "echo ..." par ton application.

    a+

    eric
    0
  4. GreG
     
    Ok ,

    Et comment faire lorsqsue l'application est demarrer pour quel
    ce fasse qu'il lorsque l'ip est de nouveau UP ??

    Encore merci de votre aide Eric.

    Cordiallement.

    GreG
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eric
     
    Heuuu. Peux-tu répéter la question?

    Si je comprends bien, mais je dois avouer que c'est là mon problème, tu veux, lorque le ping se passe bien, faire tourner une application A et lorsque ca se passe mal, faire tourner une application B.
    Dans ce cas ma réponse fait exactement ce que tu veux. Il suffit de mettre ma ligne de code dans la boucle de ton choix.

    a+

    eric
    0
  7. GreG
     
    Je vais essayer de m'expliker pour clairement.

    Lorsque que l'ip Repond au ping alors rien ne ce passe.
    Si l'Ip ne repond plus alors une application doit ce lancé.
    Lorsque l'Ip repond de nouveau alors il faut que l'application lancé precedement soir killé et que plus aucune application ne soit lancé.

    Cordiallement.

    GreG
    0
  8. GreG
     
    Ah autre petit souci :
    [root@mylinux root]# ./test
    ça marche
    [root@mylinux root]#

    La Aucun probleme car la machine ping bien. Par contre lorsque la machine ne ping plus :

    [root@mylinux root]# ./test

    Cela me laisse un blanc et je suis obligé de faire Ctrl + C pour que l'application ce lance.

    *******************************************************************************
    ** TRANScast Distributed Network Audio Content Provider
    ** Copyright (C) 2000 Nullsoft, Inc. All Rights Reserved.

    .

    Je suis vraiment désolé de vous embettez avec cela, ce script sert a une association.

    Cordiallement.

    GreG
    0
  9. GreG
     
    #!/bin/bash

    ping -q -c 2 192.168.0.4 >/dev/null 2>&1
    if [ $? -eq 0 ]; then
    echo "Aucun Probleme."
    else
    /home/GreG/sc_trans_040/sc_trans_linux /home/GreG/sc_trans_040/sc_trans.conf
    fi

    J'ai modifié le script mais j'ai toujours le probleme du Ctrl + C du msg au dessus et je n'arrive pas a trouver comme stoppé l'application lorsque l'ip est de retour.

    Cordiallement.

    GreG
    0
  10. eric
     
    Voilà chef. Il y a probablement plus court et plus joli, mais ca doit faire ce que tu demandes.

    unset PID

    while true
    do
    ping -c 1 -q 192.168.1.100 > /dev/null
    if [[ $? = 0 ]]
    then
    if [[ ! -z $PID ]]
    then
    kill $PID
    unset PID
    fi
    else
    if [[ -z $PID ]]
    then
    echo "ceci est le programme"&
    export PID=$!
    fi
    fi

    sleep 3
    done

    a+

    eric
    0
  11. GreG
     
    Je me tire les cheveux et je vais commencer à ennuyer mon monde, mais cela pose toujours le meme probleme, apres le lancement du script il le lance pas l'application si on ne fait pas "Ctrl + c" je pense que c parce que l'application lance une console que cela fais cela :( .

    Je commence vraiment à desperer apres differente manipulation cela ne fonctionne toujours pas.

    [root@mylinux root]# ./test3

    *******************************************************************************
    ** TRANScast Distributed Network Audio Content Provider
    ** Copyright (C) 2000 Nullsoft, Inc. All Rights Reserved.
    ** Use "sc_trans filename.conf" to specify a config file.
    *******************************************************************************

    l'espace blanc represente la où je suis obligé de faire Ctrl + c .

    Eric etes vous connectez sur irc ou msn , je pense que cela serai plus simple et rapide .

    Cordiallement.

    GreG
    0
  12. eric
     
    As-tu bien mis ton application en tache de fond? C'est le "&" de la ligne
    echo "ceci est le programme"&
    qui permet au script de continuer.

    a+

    eric
    0
  13. GreG
     
    #!/bin/bash

    unset PID

    while true
    do
    ping -c 1 -q 192.168.0.4 > /dev/null
    if [[ $? = 0 ]]
    then
    if [[ ! -z $PID ]]
    then
    kill $PID
    unset PID
    fi
    else
    if [[ -z $PID ]]
    then
    /home/GreG/sc_trans_040/sc_trans_linux /home/GreG/sc_trans_040/sc_trans.conf&
    export PID=$!
    fi
    fi

    sleep 3
    done

    Voila ce que j'ai mi. Mais il ne se lance malheuresement toujours pas , je doit toujours faire le Ctrl + c.

    Et lorsque l'ip est Up je suis aussi obligé de faire Ctrl + C pour arretter le script, lors du lancement voila ce qui reste lance :

    root 5298 0.0 0.2 4140 1084 pts/2 S 21:33 0:00 /bin/bash ./test3
    root 5308 0.0 0.1 3952 556 pts/2 S 21:33 0:00 sleep 3

    Ce n'est pas tres pratique car je vais mettre le script en crontab toute les minutes et donc il va rester bloqué et me faire une liste de process immense :(

    Cordiallement.

    GreG
    0
  14. eric
     
    Tu ne peux pas le lancer comme un cron job. Ca ne marchera pas.

    Qu'y a-t-il dans ton sc_trans_linux?

    a+

    eric
    0
  15. GreG
     
    sc_trans_linux est un DSP qui permet d'emettre du son sur nos serveurs audios. Nous sommes une association. Et si la connection de notre studio principal plante c'est le blackout complet , je voudrais donc que sc_trans ce lance sur un de nos serveurs dédiés dans le but de reprendre le relais et empéché un blackout a l'antenne.

    Donc comment faire pour qu'il ce lance lorsque le studio coupe pour que le sc_trans ce lance correctement ?

    Cordiallement.

    GreG
    0
  16. eric
     
    Si tu lances sc_trans_linux en tâches de fond à un pompt, normalement tu devrais récupérer la main tout de suite, avant la fin de l'exécution du programme. Est-ce le cas?
    0
  17. GreG
     
    sc_trans_linux fontionne en tache de fond une foi lancé il est totalement autonome . une lancé je peut refermer ma console il continera à tourner .
    0
  18. eric
     
    Alors, il n'y a pas de raison que cela ne fonctionne pas. Je ne vois pas pourquoi tu dois taper ctrl+C pour sortir.
    Est-ce que tu comprends bien ce que fait le script?

    a+

    eric
    0
  19. GreG
     
    Si j'ai bien compris il regarde si l'ip ping , puis si elle ne ping pas il lance sc_tranc_linux (mais c la qu'il s'arrette et ou je dois faire un ctrl + c) et si l'ip ping il ne lance pas l'application .

    GreG
    0
  20. eric
     
    Ajoute
    set -x
    en début de script, lance-le, laisse-le tourner au moins une minute sans y toucher et envoie-moi la sortie.

    a+

    eric
    0
  21. GreG
     
    Lorsque l'ip repond :

    [root@mylinux root]# ./test3
    + unset PID
    + true
    + ping -c 1 -q 192.168.0.4
    + [[ 0 = 0 ]]
    + [[ ! -z '' ]]
    + sleep 3
    + true
    + ping -c 1 -q 192.168.0.4
    + [[ 0 = 0 ]]
    + [[ ! -z '' ]]
    + sleep 3
    + true
    + ping -c 1 -q 192.168.0.4
    + [[ 0 = 0 ]]
    + [[ ! -z '' ]]
    + sleep 3
    + true
    + ping -c 1 -q 192.168.0.4
    + [[ 0 = 0 ]]
    + [[ ! -z '' ]]
    + sleep 3
    + true
    + ping -c 1 -q 192.168.0.4
    + [[ 0 = 0 ]]
    + [[ ! -z '' ]]
    + sleep 3
    + true
    + ping -c 1 -q 192.168.0.4
    + [[ 0 = 0 ]]
    + [[ ! -z '' ]]
    + sleep 3
    + true
    + ping -c 1 -q 192.168.0.4
    + [[ 0 = 0 ]]
    + [[ ! -z '' ]]
    + sleep 3
    + true
    + ping -c 1 -q 192.168.0.4
    + [[ 0 = 0 ]]
    + [[ ! -z '' ]]
    + sleep 3
    + true
    + ping -c 1 -q 192.168.0.4
    + [[ 0 = 0 ]]
    + [[ ! -z '' ]]
    + sleep 3
    + true
    + ping -c 1 -q 192.168.0.4
    + [[ 0 = 0 ]]
    + [[ ! -z '' ]]
    + sleep 3
    + true
    + ping -c 1 -q 192.168.0.4
    + [[ 0 = 0 ]]
    + [[ ! -z '' ]]
    + sleep 3
    + true
    + ping -c 1 -q 192.168.0.4
    + [[ 0 = 0 ]]
    + [[ ! -z '' ]]
    + sleep 3
    + true
    + ping -c 1 -q 192.168.0.4
    + [[ 0 = 0 ]]
    + [[ ! -z '' ]]
    + sleep 3
    + true
    + ping -c 1 -q 192.168.0.4
    + [[ 0 = 0 ]]
    + [[ ! -z '' ]]
    + sleep 3

    Lorsque l'ip ne repond pas :

    [root@mylinux root]# ./test3
    + unset PID
    + true
    + ping -c 1 -q 192.168.0.4

    et rien de plus que c'est 3 lignes pour l'ip qui ne repond pas .

    GreG
    0
  • 1
  • 2