Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/04/2016, à 14:26

tony44

Problème script bash - Comparaison de nombres décimaux

Bonjour à tous,

Je suis en stage et je dois faire un script pour superviser le load-average sur une machine Solaris.
Voici le script:
[img=script]Bibliothèques\Documents\Capture.PNG[/img]

Et voici l'erreur que j'ai
[img=erreur]Bibliothèques\Documents\Capture1.PNG[/img]

Je pense que c'est une erreur de type. Mais je n'arrive pas à la résoudre hmm

Merci d'avance pour votre aide !!

Hors ligne

#2 Le 15/04/2016, à 14:47

pingouinux

Re : Problème script bash - Comparaison de nombres décimaux

Bonjour,
Tes images sont locales à ton ordinateur, et donc pas visibles ici.
Fais plutôt un copier-coller du script et du message d'erreur (entre balises-code).

Hors ligne

#3 Le 15/04/2016, à 14:49

Watael

Re : Problème script bash - Comparaison de nombres décimaux

salut,

une machine Solaris sous Ubuntu ???

il est préférable de faire un copier/coller, que d'afficher une capture d'écran (qui d'ailleurs ne s'affiche pas; si seulement vous aviez relu votre message)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 15/04/2016, à 15:23

Nasman

Re : Problème script bash - Comparaison de nombres décimaux

Et cela semble un chemin Windows


PC fixe sous Bionic 64 bits et portable avec Focal 64 bits

Hors ligne

#5 Le 18/04/2016, à 11:13

tony44

Re : Problème script bash - Comparaison de nombres décimaux

Excusez-moi j'avais pourtant modifié le message car j'avais vu que les images ne fonctionnaient pas

Voici le script:

 #!/bin/bash

#set -x

# Usage

if [ $# -lt 6 ]; then
echo "Usage: $0 <Load1_Warning> <Load5_Warning> <Load15_Warning> <Load1_Critical> <Load5_Critical> <Load15_Critical>"
exit 2
fi

# Filesystem threshold values
Load1_Warning=$1
Load5_Warning=$2
Load15_Warning=$3
Load1_Critical=$4
Load5_Critical=$5
Load15_Critical=$6

# On recupere les elements du resultat de la commande uptime qui nous interesse

Load1_use=$( top | grep "last" | awk {'print $6'} )
Load5_use=$( top | grep "last" | awk {'print $7'} )
Load15_use=$( top | grep "last" | awk {'print $8'} )

Load1_use_M=$( echo "${Load1_use%?}*100" | bc )
Load5_use_M=$( echo "${Load5_use%?}*100" | bc )
Load15_use_M=$( echo "${Load15_use%?}*100" | bc )

Load1_Warning_M=$( echo "${Load1_Warning}*100" | bc )
Load5_Warning_M=$( echo "${Load5_Warning}*100" | bc )
Load15_Warning_M=$( echo "${Load15_Warning}*100" | bc )
Load1_Critical_M=$( echo "${Load1_Critical}*100" | bc )
Load5_Critical_M=$( echo "${Load5_Critical}*100" | bc )
Load15_Critical_M=$( echo "${Load15_Critical}*100" | bc )

Load_use=( ${Load1_use_M} ${Load5_use_M} ${Load15_use_M} )
Load_Warning=( ${Load1_Warning_M} ${Load5_Warning_M} ${Load15_Warning_M} )
Load_Critical=( ${Load1_Critical_M} ${Load5_Critical_M} ${Load15_Critical_M} )



for i in 0 1 2
        do
                if [ ${Load_use[${i}]} -lt ${Load_Warning[${i}]} | bc ]; then
                echo "Load average: ${Load1_use%?}, ${Load5_use%?}, ${Load15_use%?}|load1=${Load1_use%?} load5=${Load5_use%?} load15=${Load15_use%?} ";
        exit 0
                fi
        done

for i in 0 1 2
        do
                if [ ${Load_use[${i}]} -ge ${Load_Critical[${i}]} | bc ]; then
                echo "Load average Critical: ${Load1_use%?}, ${Load5_use%?}, ${Load15_use%?}|load1=${Load1_use%?} load5=${Load5_use%?} load15=${Load15_use%?} ";
				exit 2
                fi
        done
		
for i in 0 1 2
        do
                if [ ${Load_use[${i}]} -ge ${Load_Warning[${i}]} | bc ]; then
                echo "Load average Warning: ${Load1_use%?}, ${Load5_use%?}, ${Load15_use%?}|load1=${Load1_use%?} load5=${Load5_use%?} load15=${Load15_use%?} ";
				exit 1
                fi
        done
		
		

Et voici l'erreur que j'ai

/scripts/nagios/check_test2: line 45: [: missing `]'
+ bc ']'
can't open input file ] on line 0, command line

Du coup, le script bloque et n'arrive pas à passer à la suite ..

Merci d'avance pour votre aide !!

Hors ligne

#6 Le 18/04/2016, à 11:51

pingouinux

Re : Problème script bash - Comparaison de nombres décimaux

Bonjour,
Essaye de remplacer la ligne 45 par celle-ci

                if (( $(bc <<<"${Load_use[$i]}<${Load_Warning[$i]}") )); then

Il y a d'autres lignes dans le même cas.

Hors ligne

#7 Le 18/04/2016, à 11:58

MicP

Re : Problème script bash - Comparaison de nombres décimaux

Je ne comprends pas ce que tu as voulu faire avec " | bc" dans tes tests "if", je pense qu'il doit s'agir d'une erreur de copié/collé.

Je verrai plutôt la ligne 45 (et les if suivants) comme ça :

                if [ ${Load_use[${i}]} -lt ${Load_Warning[${i}]} ]; then

Hors ligne

#8 Le 18/04/2016, à 13:42

tony44

Re : Problème script bash - Comparaison de nombres décimaux

Merci pour vos réponses j'ai essayé de modifier mes lignes de if avec celle proposé par Pingouinux.
Je n'ai plus le même message d'erreur mais maintenant j'ai ça:

+ for i in 0 1 2
++ bc
syntax error on line 1, teletype
+ ((    ))
+ for i in 0 1 2
++ bc
syntax error on line 1, teletype
+ ((    ))
+ for i in 0 1 2
++ bc
syntax error on line 1, teletype
+ ((    ))
+ for i in 0 1 2
++ bc
syntax error on line 1, teletype
+ ((    ))
+ for i in 0 1 2
++ bc
syntax error on line 1, teletype
+ ((    ))
+ for i in 0 1 2
++ bc
syntax error on line 1, teletype
+ ((    ))
+ for i in 0 1 2
++ bc
syntax error on line 1, teletype
+ ((    ))
+ for i in 0 1 2
++ bc
syntax error on line 1, teletype
+ ((    ))
+ for i in 0 1 2
++ bc
syntax error on line 1, teletype
+ ((    ))

Hors ligne

#9 Le 18/04/2016, à 13:45

tony44

Re : Problème script bash - Comparaison de nombres décimaux

J'ai utilisé la commande bc car Bash n'arrive pas à comparer des réels donc si je fais le code que indique MicP je vais avoir une erreur comme quoi les deux nombres ne sont pas du même format.

Hors ligne

#10 Le 18/04/2016, à 14:41

MicP

Re : Problème script bash - Comparaison de nombres décimaux

Ah oui, j'avais oublié que tu voulais calculer sur des nombres décimaux => bc obligé

Essaye avec ça pour voir :
if [[ $(echo "${Load_use[${i}]} - ${Load_Warning[${i}]}" | bc) != 0 ]]; then

EDIT : Zut, c'est pas finit : Tu voulais aussi comparer avec supérieur ou égal…Donc ça va pas…

Dernière modification par MicP (Le 18/04/2016, à 15:22)

Hors ligne

#11 Le 18/04/2016, à 14:55

tony44

Re : Problème script bash - Comparaison de nombres décimaux

Pareil ça me met la même erreur que précédemment ..

Hors ligne

#12 Le 18/04/2016, à 15:23

MicP

Re : Problème script bash - Comparaison de nombres décimaux

Merci pour le retour.

(j'avais commencé à éditer mon message car je m'en suis aussi rendu compte, mais j'ai du répondre au téléphone.)

Hors ligne

#13 Le 18/04/2016, à 15:27

claudius01

Re : Problème script bash - Comparaison de nombres décimaux

Bonjour,

MicP a écrit :

Ah oui, j'avais oublié que tu voulais calculer sur des nombres décimaux => bc obligé

En voilà une affirmation gratuite ?!..
Cf. bash comparaison nombres decimaux et awk comparaison nombres decimaux (en autres ;-)

Dernière modification par claudius01 (Le 18/04/2016, à 15:29)

Hors ligne

#14 Le 18/04/2016, à 17:18

pingouinux

Re : Problème script bash - Comparaison de nombres décimaux

@tony44 @8 :
Es-tu bien en bash ?
L'espace en tête de la première ligne du script que tu montres en #5 ne devrait pas s'y trouver. Est-ce une erreur de copier-coller, ou est-ce ainsi dans le script ?
Comment as-tu lancé le script ?

Hors ligne

#15 Le 18/04/2016, à 17:54

compte banni et supprimé

Re : Problème script bash - Comparaison de nombres décimaux

Bonjour,

J'ai eut ce genre de problème hier
Je ne sais pas pourquoi mais certains espaces ne sont considéré comme des espaces et on se retrouve avec ce genre d'erreur
La solution est de d'aller à chaque espace, le supprimer et le refaire en appuyant sur la touche espace et ce à chaque espace de chaque ligne

j'ai énormément galéré pour arriver à trouver ça, une prise de tête
Et comme je suis d'un naturel têtu, je n'ai pas lâché prise lol lol lol

#16 Le 18/04/2016, à 18:47

pingouinux

Re : Problème script bash - Comparaison de nombres décimaux

philanthrope #15 a écrit :

Je ne sais pas pourquoi mais certains espaces ne sont considéré comme des espaces et on se retrouve avec ce genre d'erreur

Pour voir ce qu'il en est

hd fichier

et tu montres la sortie correspondant aux lignes concernées.

Je ne pense pas que le problème de tony44 soit dû à ça.

Hors ligne

#17 Le 18/04/2016, à 19:52

MicP

Re : Problème script bash - Comparaison de nombres décimaux

En voilà une affirmation gratuite ?!..

Dans le deuxième lien que tu cite, on utilise awk, ce n'est donc pas l'interpréteur bash qui va faire le calcul,
et regarde dans le premier lien, on trouve tout en bas : "…Bash ne gère que les entiers. …" ;-)

Hors ligne