#1 Le 25/03/2015, à 11:49
- Beuhlet_Reseau
Script : If avec plusieurs éléments [RESOLU]
Bonjour,
Je réalise un script de vérification sur le réseau.
Certains OS/SE ne supporte pas la commande /usr/sbin/ping ou encore /usr/bin/netstat. Cependant elles ne représentent qu'une minorité dans le parc.
Dans mon script j'aimerais donc mettre une condition pour contourner le problème.
Les Machines avec l'os récalcitrant ont été identifiées et placées dans un groupe. Je cherche un faire une commande de ce style quand le script rencontre des machines de ce type de groupe :
[Debut du script]
...
=> [ IF $grpSPE = grpSPE 1 ou grpSPE2 ]
then
commande appropriée
else
déroulement normal.
fi
Sa pourrait fonctionner comme sa je suppose ?
Merci
Dernière modification par Beuhlet_Reseau (Le 02/04/2015, à 15:31)
L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).
Hors ligne
#2 Le 25/03/2015, à 11:53
- Shanx
Re : Script : If avec plusieurs éléments [RESOLU]
SAlut,
if [ "$grpSPE " == "grpSPE 1" ] || [ "$grpSPE " == "grpSPE 2" ] ; then
echo "foo"
else
echo bar
fi
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#3 Le 25/03/2015, à 12:10
- Beuhlet_Reseau
Re : Script : If avec plusieurs éléments [RESOLU]
SAlut,
if [ "$grpSPE " == "grpSPE 1" ] || [ "$grpSPE " == "grpSPE 2" ] ; then echo "foo" else echo bar fi
Merci beaucoup Shanx le roux. Foo et bar sont tes genres de mots fourre tout ?
L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).
Hors ligne
#4 Le 25/03/2015, à 12:23
- Shanx
Re : Script : If avec plusieurs éléments [RESOLU]
Foo et bar sont tes genres de mots fourre tout ?
Yep. Explication en anglais, ou en français.
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#5 Le 25/03/2015, à 13:38
- Beuhlet_Reseau
Re : Script : If avec plusieurs éléments [RESOLU]
Dernière petite chose, pour éviter de mettre le lanceur de script ./ pour l’exécuter, j'ai mis mon script dans un répertoire Path "/usr/local/bin/".
Mais lorsque je lance mon script pour récupérer les informations en sortie j'obtiens ce genre de résultat :
GroupeSPE;/usr/local/bin/check;serveur;OK;Pas de problème;
Seulement au lieu du chemin du dossier en retour de valeur $0 (/usr/local/bin/) j'aimerais seulement avoir le nom de mon script donc ici Check
L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).
Hors ligne
#6 Le 25/03/2015, à 14:35
- MicP
Re : Script : If avec plusieurs éléments [RESOLU]
…
CheminDuScript="$0"
nomDuScript=$(basename "$0")
…
Dernière modification par MicP (Le 25/03/2015, à 14:42)
Hors ligne
#7 Le 25/03/2015, à 15:33
- Beuhlet_Reseau
Re : Script : If avec plusieurs éléments [RESOLU]
… Indescriptible="$0" nomDuScript=$(basename "$0") …
Donc si j'ai mis mon script dans le repertoire "/usr/local/bin/" et que depuis ce répertoire j'ai copié le script dans le répertoire "script_check", au début de mon script j'insère :
Début script :
/usr/local/bin/="$0"
Script=$(basename "$0")
echo "Plateforme;Script;Serveurs;Nok/OK;Problème" > $check
[...]
echo "$GroupeSPE;$0;$serveur;OK;Rien A Signaler;" >> $check
Fin.
L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).
Hors ligne
#8 Le 26/03/2015, à 08:45
- MicP
Re : Script : If avec plusieurs éléments [RESOLU]
Lit la page du manuel de la commande "basename"
man basename
=======
Un exemple de contenu d'un script utilisant la commande "basename"
#!/bin/bash
CheminDuScript="$0"
nomDuScript=$(basename "$0")
echo "$CheminDuScript"
echo "$nomDuScript"
=======
Mais lorsque je lance mon script pour récupérer les informations en sortie j'obtiens ce genre de résultat :
GroupeSPE;/usr/local/bin/check;serveur;OK;Pas de problème;
Donne nous le contenu complet de ton script pour qu'on puisse comprendre comment tu as pu obtenir ce retour ,
car avec ce que tu as donné jusqu'à présent, c'est impossible à deviner.
=======
Eric Sanchis : Introduction à la programmation en Bash
Dernière modification par MicP (Le 26/03/2015, à 08:53)
Hors ligne
#9 Le 26/03/2015, à 15:40
- Beuhlet_Reseau
Re : Script : If avec plusieurs éléments [RESOLU]
C'est bon le problème est réglé avec basename.
Je travaille sur un parc combinant Linux et Sun (majoritairement).
Dans mon script lorsque l'os est identifié comme Sun il continu son déroulement normal, mais lorsqu'il rencontre un linux certaines commandes système ne sont pas acceptées c'est notamment le cas du ping qui du côté Sun va retourner "srv alive" ce qui n'est pas le cas côté Linux.
Pour aller plus loin
if [ "$grpSPE " == "grpSPE 1" ] || [ "$grpSPE " == "grpSPE 2" ]
then
Ping (Linux)
else
/usr/sbin/ping host > verif (Sun)
Mon souci sera d'utiliser le ping sur le linux en prenant en compte si le ping est réussi ou non car sur Linux il y a pas de retour style alive ou autre mais les lignes basiques :
aus106root#ping -c3 srv
PING srv (2.2.2.2) 56(84) bytes of data.
64 bytes from aus106 (2.2..2): icmp_seq=1 ttl=64 time=0.018 ms
64 bytes from aus106 (2.2..2): icmp_seq=2 ttl=64 time=0.020 ms
64 bytes from aus106 (2.2.2.2): icmp_seq=3 ttl=64 time=0.017 ms
--- srv ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 0.017/0.018/0.020/0.003 ms
Comment extraire l'information prouvant qu'il est alive ou down et l'incorporer dans mon script ?
Pour l'instant j'avais pensé à sa :
if [ "$grpSPE " == "grpSPE 1" ] || [ "$grpSPE " == "grpSPE 2" ]
then
p=`ping -c3 aus106`
if [ $p = /100%/ ]
then
echo "aus106 est pas connectee"
else
echo "aus106 est connectee" > verif
fi
else
/usr/sbin/ping host > $verif (Sun)
if [ -s verif ]
then
déroulement du script
fi
p=`ping -c3 aus106` Ces commandes vont me servir en cas de paquet
if [ $p = /100%/ ] perdu à 100% (donc machine down) mais si elle est up elle crée verif.
Note : Le fichier verif sert à ce que le script continu son déroulement, car pour continuer il test si le fichier verif contient quelque chose.
L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).
Hors ligne
#10 Le 26/03/2015, à 15:51
- Shanx
Re : Script : If avec plusieurs éléments [RESOLU]
Plus simple :
if [ ping -c 1 aus106 > /dev/null ] ; then
echo "aus106 est connectee" > verif
else
echo "aus106 est pas connectee"
Et plutôt que de créer un fichier, tu devrais utiliser une variable (qui vaut 0 si down, 1 si up par exemple).
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#11 Le 26/03/2015, à 16:03
- Beuhlet_Reseau
Re : Script : If avec plusieurs éléments [RESOLU]
Plus simple :
if [ ping -c 1 aus106 > /dev/null ] ; then echo "aus106 est connectee" > verif else echo "aus106 est pas connectee"
Et plutôt que de créer un fichier, tu devrais utiliser une variable (qui vaut 0 si down, 1 si up par exemple).
if [ ping -c 1 aus106 > /dev/null ]
then
echo "aus106 est connectee" > verif
else
echo "aus106 est pas connectee"
fi
aus106root#./recup_ping
./recup_ping[1]: [: -c: unknown operator
aus106 est pas connectee
Il y a un problème vraisemblablement, le repertoire dev/null sert à quelque chose ou on peut le supprimer ?
Avec des 0 ou des 1 serait bien je pencherais sur ce genre de détail lorsque je peaufinerais mon script
L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).
Hors ligne
#12 Le 26/03/2015, à 16:06
- MicP
Re : Script : If avec plusieurs éléments [RESOLU]
Moins lisible, mais plus court :
michel@debG53SW:~$ ping -c3 -t3 192.168.0.1 >/dev/null && echo "A répondu au Ping" || echo "Pas de réponse au Ping";
A répondu au Ping
michel@debG53SW:~$ ping -c3 -t3 192.168.1.1 >/dev/null && echo "A répondu au Ping" || echo "Pas de réponse au Ping";
Pas de réponse au Ping
michel@debG53SW:~$
commande >/dev/null
La redirection ">" de la sortie d'une commande vers le répertoire "/dev/null" permet d'éviter l'affichage des message de la commande.
Dernière modification par MicP (Le 26/03/2015, à 16:18)
Hors ligne
#13 Le 26/03/2015, à 16:16
- Watael
Re : Script : If avec plusieurs éléments [RESOLU]
salut,
sachant que la syntaxe, c'est
if command; then ...fi
ou command peut être test, ou une autre commande;.
le test est superfétatoire.
donc,
if ping -c3 -t3 $machine >/dev/null 2>&1; then : ...; else : ...; fi
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#14 Le 26/03/2015, à 16:29
- Beuhlet_Reseau
Re : Script : If avec plusieurs éléments [RESOLU]
Moins lisible, mais plus court :
michel@debG53SW:~$ ping -c3 -t3 192.168.0.1 >/dev/null && echo "A répondu au Ping" || echo "Pas de réponse au Ping"; A répondu au Ping michel@debG53SW:~$ ping -c3 -t3 192.168.1.1 >/dev/null && echo "A répondu au Ping" || echo "Pas de réponse au Ping"; Pas de réponse au Ping michel@debG53SW:~$
commande >/dev/null
La redirection ">" de la sortie d'une commande vers le répertoire "/dev/null" permet d'éviter l'affichage des message de la commande.
Merci cette commande fonctionne je vais voir pour l'insérer dans mon script. Peux tu m'expliquer quand même la commande :
La première partie est un simple ping de la machine sans afficher le résultat (ping -c3 -t3 192.168.0.1 >/dev/null) mais comment après il arrive a discerner le bon du mauvais résultat ?
salut,
sachant que la syntaxe, c'est
if command; then ...fi
ou command peut être test, ou une autre commande;.
le test est superfétatoire.donc,
if ping -c3 -t3 $machine >/dev/null 2>&1; then : ...; else : ...; fi
Si je devais adapter cette commande elle ressemblerais à celle citer plus haut ou non ? :
if ping -c3 -t3 192.168.0.1>/dev/null 2>&1
then
ok
else
nok
fi
?
L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).
Hors ligne
#15 Le 26/03/2015, à 17:48
- MicP
Re : Script : If avec plusieurs éléments [RESOLU]
… Peux tu m'expliquer quand même la commande :…
ping -c3 -t3 192.168.0.1 >/dev/null && echo "A répondu au Ping" || echo "Pas de réponse au Ping";
=======
Pour "-c3 -t3", (c'est juste adapté à mon contexte à moi chez moi, pour moi, pour la démo) voir :
man ping
=======
J'ai choisi ces adresses IP pour que la démo fonctionne chez moi.
"192.168.0.1" parce que je suis certain que cette adresse IP (ma box chez moi) va répondre au ping.
"192.168.1.1" parce que je suis certain que cette adresse IP n'est pas accessible (chez moi, depuis ma machine à moi)
=======
Je t'invite aussi à lire :
man icmp
et :
Dernière modification par MicP (Le 26/03/2015, à 19:02)
Hors ligne
#16 Le 27/03/2015, à 12:58
- Beuhlet_Reseau
Re : Script : If avec plusieurs éléments [RESOLU]
Merci M.I.T ton aide est précieuse.
Maintenant que les différences de système sont opériationnelles, je cherche pour les cas des Linux a comparé les fichiers des routes statiques avec celles des dynamiques.
Le script se déroule comme sa :
Choix du Groupe
Liste des serveurs du groupe
Création du fichier netstat (route dynamiques) avec traitement du texte à l'intérieur pour obtenir ce résultat (fichier netstat_ref):
10.10.10.10 via 10.11.11.11 dev bond0
10.10.10.11 via 10.11.11.11 dev bond0
10.10.10.12 via 10.11.11.11 dev bond0
10.10.10.13 via 10.11.11.11 dev bond0
10.10.10.14 via 10.11.11.11 dev bond0
[...]
D'un autre côté je récupère le fichier des routes statiques, en faisant un cat
####################################
# LAN #
####################################
10.10.10.10/24 via 10.11.11.11 dev bond0
############################
# LAN2 #
############################
10.10.10.11/18 via 10.11.11.11dev bond0
10.10.10.12/32 via 10.11.11.11 dev bond0
10.10.10.13/32 via 10.11.11.11 dev bond0
10.10.10.14 via 10.11.11.11 dev bond0
[...]
J'effectue le traitement suivant: Suppression des commentaires avec grep -v "#" :
10.10.10.10/25 via 10.11.11.11dev bond0
10.10.10.11/18 via 10.11.11.11 dev bond0
10.10.10.12/32 via 10.11.11.11 dev bond0
10.10.10.13/32 via 10.11.11.11 dev bond0
10.10.10.14 via 10.11.11.11 dev bond0
[...]
Mon souci intervient maintenant, j'essaye d'enlever le masque qui est en notation CIDDR en faisant un grev -v "/". Seulement il ne se contente pas d'enlever les /32, /26 ect mais la ligne entière (le principe du grev quoi) donc quelqu'un aurait une idée de comment contourner le problème ?
Merci
L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).
Hors ligne
#17 Le 27/03/2015, à 16:04
- Beuhlet_Reseau
Re : Script : If avec plusieurs éléments [RESOLU]
En cherchant dans les commandes sed, j'ai trouvé quelque chose d'intéressant :
Exemple : Le GUI est intuitif
J'applique la commande : [b]sed s/GUI//g[/b]
=> Le est intuitif
Donc sur mon problème :
Exemple : 192.168.1.1/25
J'applique la commande : sed s/\/**//g (Je voulais donc supprimer sur chaque ligne le masque CIDR en loccurence le /25 ou /32 ect)
Mais la commande ne passe pas ...
L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).
Hors ligne
#18 Le 27/03/2015, à 16:40
- Shanx
Re : Script : If avec plusieurs éléments [RESOLU]
sed 's/\/[0-9][0-9]//g'
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#19 Le 27/03/2015, à 16:45
- MicP
Re : Script : If avec plusieurs éléments [RESOLU]
Pour remplacer par une chaîne vide "le premier slash rencontré dans chaque ligne du texte et tous les caractères numériques qui pourraient le suivre" :
michel@debG53SW:~$ echo "10.10.10.13/ via 10.11.11.11 dev bond0" | sed 's/\/[0-9]*//'
10.10.10.13 via 10.11.11.11 dev bond0
michel@debG53SW:~$
michel@debG53SW:~$ echo "10.10.10.13/8 via 10.11.11.11 dev bond0" | sed 's/\/[0-9]*//'
10.10.10.13 via 10.11.11.11 dev bond0
michel@debG53SW:~$
michel@debG53SW:~$ echo "10.10.10.13/32 via 10.11.11.11 dev bond0" | sed 's/\/[0-9]*//'
10.10.10.13 via 10.11.11.11 dev bond0
michel@debG53SW:~$
michel@debG53SW:~$ echo "10.10.10.13/4242mêmepaseffacé via 10.11.11.11 dev bond0" | sed 's/\/[0-9]*//'
10.10.10.13mêmepaseffacé via 10.11.11.11 dev bond0
S'il y a un bon connaisseur des regex qui passe par là, qu'il n'hésite pas à y mettre son grain de sed, parce que je suis certain qu'il doit être possible de faire mieux (un motif plus ciblé).
Merci d'avance
=======
EDIT : J'aime bien celle la aussi :
sed 's|/[0-9]*||'
qui fait la même chose, mais comme elle utilise le caractère "|" comme caractère de séparation,
le caractère "/" qui est dans le motif n'a pas besoin d'être échappé.
Dernière modification par MicP (Le 27/03/2015, à 22:08)
Hors ligne
#20 Le 01/04/2015, à 11:36
- Beuhlet_Reseau
Re : Script : If avec plusieurs éléments [RESOLU]
Merci j'ai obtenu mes 2 fichiers de routes traités.
Dans un ordre plus au moins bancale, du coup afin de vérifier la présence des routes dynamiques ou pas dans celui des statiques j'ai juste à faire cela n'est ce pas :
Variables :
fichier1 = route_statique ## Fichier résultat d'un cat, grep, sed
fichier2 = route_dynamique ## Fichier résultat d'un netstat -nr
Je les trie :
sort fichier1 > $fichier1
sort fichier2 > $fichier2
Je les compare
Diff $fichier1 fichier2
Pour obtenir ce genre de message :
<Addr_ip> statique non présente en dynamique
<Addr_ip> dynamique non présente en statique
ect
[...]
L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).
Hors ligne
#21 Le 02/04/2015, à 04:11
- MicP
Re : Script : If avec plusieurs éléments [RESOLU]
michel@debG53SW:~/pourTests$ cat routDyna
10.10.10.11 via 10.11.11.11 dev bond0
10.10.10.12 via 10.11.11.11 dev bond0
10.10.10.13 via 10.11.11.11 dev bond0
10.10.10.10 via 10.11.11.11 dev bond0
10.10.10.14 via 10.11.11.11 dev bond0
michel@debG53SW:~/pourTests$
michel@debG53SW:~/pourTests$ cat routStat
10.10.10.10 via 10.11.11.11 dev bond0
10.10.10.13 via 10.11.11.11 dev bond0
10.10.10.11 via 10.11.11.11 dev bond0
10.10.10.14 via 10.11.11.11 dev bond0
michel@debG53SW:~/pourTests$
michel@debG53SW:~/pourTests$ sort routDyna > routDyna.sort
michel@debG53SW:~/pourTests$ sort routStat > routStat.sort
michel@debG53SW:~/pourTests$ diff routDyna.sort routStat.sort
3d2
< 10.10.10.12 via 10.11.11.11 dev bond0
michel@debG53SW:~/pourTests$
Hors ligne
#22 Le 02/04/2015, à 10:15
- Beuhlet_Reseau
Re : Script : If avec plusieurs éléments [RESOLU]
Oui voila en gros j'aurais même rajouter pour trier par rapport à l'interface réseau concerné à faire un sort k5 ( genre trie sur la 5ième colonne).
J'ai un souci au niveau du ping bizarrement quand je l'a passe dans la console cela fonctionne mais lorsque je le lance depuis un script :
verif=/script_romain/test_routesref_cat/result/verif
serveur=aus106
if [ ping -c 1 $serveur > /dev/null ]
then
echo "$serveur est connectee" > $verif
else
echo "$serveurest pas connectee"
fi
ou même sa
if [ rsh $serveur ping -c 1 $serveur > /dev/null ]
then
echo "$serveur est connectee" > $verif
else
echo "$serveurest pas connectee"
fi
J'ai ces messages d'erreurs
bem root#./te
./te[11]: ping: unknown test operator
aus106 est pas connectee
ou
bem root#./te
./te[11]: test: ] missing
aus106 est pas connectee
Aussi pourquoi lors du déroulement du script en ayant renseigné l'endroit ou créer le fichier verif il indique une erreur de création :
verif=/script_ro/test_routesref_cat/result/verif
Message d'erreur lors du déroulement du script :
bem root#./te
touch $verif: /script_ro/test_routesref_cat/result/ cannot create
./te[11]: /script_ro/test_routesref_cat/result/: cannot create
L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).
Hors ligne
#23 Le 02/04/2015, à 10:45
- Beuhlet_Reseau
Re : Script : If avec plusieurs éléments [RESOLU]
michel@debG53SW:~/pourTests$ cat routDyna 10.10.10.11 via 10.11.11.11 dev bond0 10.10.10.12 via 10.11.11.11 dev bond0 10.10.10.13 via 10.11.11.11 dev bond0 10.10.10.10 via 10.11.11.11 dev bond0 10.10.10.14 via 10.11.11.11 dev bond0 michel@debG53SW:~/pourTests$ michel@debG53SW:~/pourTests$ cat routStat 10.10.10.10 via 10.11.11.11 dev bond0 10.10.10.13 via 10.11.11.11 dev bond0 10.10.10.11 via 10.11.11.11 dev bond0 10.10.10.14 via 10.11.11.11 dev bond0 michel@debG53SW:~/pourTests$
michel@debG53SW:~/pourTests$ sort routDyna > routDyna.sort michel@debG53SW:~/pourTests$ sort routStat > routStat.sort michel@debG53SW:~/pourTests$ diff routDyna.sort routStat.sort 3d2 < 10.10.10.12 via 10.11.11.11 dev bond0 michel@debG53SW:~/pourTests$
Petite chose j'ai mes 2 fichier sorté maintenant le script est relativement cours donc ça me va. Néanmoins j'ai ce côté perfectionniste bien trop grand par rapport à mes connaissances (Voir George Jung).
J'ai maintenant mon script qui va me coller toutes les différences entre routes dyn et routes stat dans un fichier diff_routes.
J'ai fait en sort que ce fichier en plus d'un corps de message style tel ou tel serveur est NOK au vue du test de ces fichiers de routes, mais j'aimerais aller un peu plus loin pour faire en sort que pour chaque serveur (donc dans ma boucle actuelle) il me sort un fichier par serveur (on peut l'appeler delta_serveur) avec tel route statique non présente en dynamique ou tel route dynamique non présente en statique ?
Est ce possible sans faire un script long comme un bras ?
L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).
Hors ligne
#24 Le 02/04/2015, à 11:05
- MicP
Re : Script : If avec plusieurs éléments [RESOLU]
bem root#./te
./te[11]: ping: unknown test operator
aus106 est pas connectee
mea culpa : j'aurai dû envisager le cas du retour de "stderr" (shell interactif…ou pas),
d'autant que Watael dans son post #13, l'avait bien formulé en utilisant la redirection de stderr vers stdout (2>&1) pour que le tout ça aille à la poubelle (/dev/null).
donc, il faudrait reformuler la ligne de commande proposée dans mon post #14 :
ping -c3 -t3 192.168.0.1 >/dev/null 2>&1 && echo "A répondu au Ping" || echo "Pas de réponse au Ping";
Dernière modification par MicP (Le 02/04/2015, à 11:17)
Hors ligne
#25 Le 02/04/2015, à 20:30
- Postmortem
Re : Script : If avec plusieurs éléments [RESOLU]
Salut,
Oui voila en gros j'aurais même rajouter pour trier par rapport à l'interface réseau concerné à faire un sort k5 ( genre trie sur la 5ième colonne).
J'ai un souci au niveau du ping bizarrement quand je l'a passe dans la console cela fonctionne mais lorsque je le lance depuis un script :
verif=/script_romain/test_routesref_cat/result/verif
serveur=aus106if [ ping -c 1 $serveur > /dev/null ] then echo "$serveur est connectee" > $verif else echo "$serveurest pas connectee" fi
ou même sa
if [ rsh $serveur ping -c 1 $serveur > /dev/null ] then echo "$serveur est connectee" > $verif else echo "$serveurest pas connectee" fi
Ton problème vient de la façon dont tu fais ton if ; la syntaxe de if en Shell, comme quelqu'un te l'a dit plus haut, est :
if commande1
then
commandes2
else
commandes3
fi
Si le code retour de commande1 est égal à 0, on exécute les commandes2 ; si le code retour de commande1 est différent de 0, on exécute commandes3.
Il faut donc écrire ton test comme ceci :
if ping -c 1 $serveur > /dev/null
then
echo "$serveur est connectee" > $verif
else
echo "$serveur est pas connectee"
fi
Les "[ ]" derrière un if ne sont qu'un raccourci de la commande "test", ceci :
if [ $toto -eq 1 ]
Équivaut à :
if test $toto -eq 1
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne