Aide ScriptShell :(

Fermé
GreG - 8 juil. 2004 à 15:25
 GreG - 17 juil. 2004 à 13:44
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

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
Merci Eric , j'aimerais egalement qu'il lance une application lorsque cela ne fonctionne pas .

Cordiallement.

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

a+

eric
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
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
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
#!/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
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
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
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
#!/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
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
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
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
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
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
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
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
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