Bash : interprêtation d'une variable
Résolu/Fermé
IvyAlice
Messages postés
379
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
14 septembre 2013
-
Modifié par IvyAlice le 23/05/2011 à 10:41
IvyAlice Messages postés 379 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 14 septembre 2013 - 23 mai 2011 à 14:31
IvyAlice Messages postés 379 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 14 septembre 2013 - 23 mai 2011 à 14:31
A voir également:
- Bash : interprêtation d'une variable
- Bingo bash free - Télécharger - Divers Jeux
- Minimal bash-like line editing is supported ✓ - Forum Linux / Unix
- Bash addition ✓ - Forum Shell
- Bash pause ✓ - Forum Shell
- Bash-3.2 - Forum MacOS
6 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
23 mai 2011 à 10:56
23 mai 2011 à 10:56
Salut,
stateret='echo $stringret | cut -d' ' -f2'
Si je comprends bien ici tu veux récupérer le résultat de la commande entre apostrophes.
Alors mets soit les apostrophes inverses soit $(commande) , mieux c'est la 2ème possibilités
Et puis si tu veux traiter un apostrophe comme une caractère alors soit tu mets en backslash avant soit tu entoures la chaînes avec des guillemets.
stateret='echo $stringret | cut -d' ' -f2'
Si je comprends bien ici tu veux récupérer le résultat de la commande entre apostrophes.
Alors mets soit les apostrophes inverses soit $(commande) , mieux c'est la 2ème possibilités
Et puis si tu veux traiter un apostrophe comme une caractère alors soit tu mets en backslash avant soit tu entoures la chaînes avec des guillemets.
stateret=$(echo $stringret | cut -d' ' -f2)
IvyAlice
Messages postés
379
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
14 septembre 2013
32
23 mai 2011 à 11:04
23 mai 2011 à 11:04
Salut lami20j
J'ai essayé ta ligne de commande
Mais j'obtiens toujours le même résultat dans Nagios.
Ivy
J'ai essayé ta ligne de commande
stateret=$(echo $stringret | cut -d' ' -f2)
Mais j'obtiens toujours le même résultat dans Nagios.
Ivy
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
23 mai 2011 à 11:07
23 mai 2011 à 11:07
Re,
Que t'affiche la commande ?
Et dans ta condition if si je ne me trompe pas c'est == (comparaison) et pas = (affectation)
Que t'affiche la commande ?
echo $stateret
Et dans ta condition if si je ne me trompe pas c'est == (comparaison) et pas = (affectation)
IvyAlice
Messages postés
379
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
14 septembre 2013
32
Modifié par IvyAlice le 23/05/2011 à 11:32
Modifié par IvyAlice le 23/05/2011 à 11:32
Justement si je lance le scripte à la main (en root ou en nagios) $stateret affiche OK et lorsque c'est le processus nagios qui lance le scripte, $stateret affiche command.
je crois que = c'est pour comparer les chaines == pour les nombres
(mais j'ai aussi vu que = c'était pour affecter, cela dépend p-e des espaces laissé ou non de chaque côté, je ne sais pas)
Bref j'ai essayé avec == dans mon if, mais c'est tjr pareil au niveau de la console d'administration. par contre si je lance le scripte manuellement :
(ligne 27 --> c'est le "fi")
je crois que = c'est pour comparer les chaines == pour les nombres
(mais j'ai aussi vu que = c'était pour affecter, cela dépend p-e des espaces laissé ou non de chaque côté, je ne sais pas)
Bref j'ai essayé avec == dans mon if, mais c'est tjr pareil au niveau de la console d'administration. par contre si je lance le scripte manuellement :
root@*:# su nagios ./check_<processus>2.sh [: 27: OK: unexpected operator OK != OK T_T test 3 root@*:# ./check_<processus>.sh nous sommes dans le stateret = OK --> OUI !!!
(ligne 27 --> c'est le "fi")
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
IvyAlice
Messages postés
379
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
14 septembre 2013
32
Modifié par IvyAlice le 23/05/2011 à 14:15
Modifié par IvyAlice le 23/05/2011 à 14:15
Ah ben voilà le problème.
Lorsque Nagios execute la première partie du script :
il me retourne autre chose que quand je lance le script à la main, à savoir "External command error:hrSWRunPath: Unknow Object Identifier (Index out of range:(hrSWRunIndex))
voilà d'où sort la valeur command.
J'dois avoir un pb au niveau snmp alors :-/
(si quelqu'un sait pourquoi snmp ne réagit pas pareil selon si on lance le script à la main ou s'il l'est par nagios, je suis preneuse aussi )
Ivy
Lorsque Nagios execute la première partie du script :
tmpfile='pwd'/check_<processus>_pid.tmp valretour=3 # si le ficheir existe pas met le PID de <processus> dedans [ -f $tmpfile ] || snmpwalk 1*:* -v * -c * -m HOST-RESOURCES-MIB | grep hrSWRunPath | grep <processus>| cut -d. -f 2 | cut -d' ' -f1 > $tmpfile valpid=$(cat $tmpfile) stringret='/usr/local/nagios/libexec/check_snmp -H * -p * -P * -C * -o hrSWRunPath.$valpid '
il me retourne autre chose que quand je lance le script à la main, à savoir "External command error:hrSWRunPath: Unknow Object Identifier (Index out of range:(hrSWRunIndex))
voilà d'où sort la valeur command.
J'dois avoir un pb au niveau snmp alors :-/
(si quelqu'un sait pourquoi snmp ne réagit pas pareil selon si on lance le script à la main ou s'il l'est par nagios, je suis preneuse aussi )
Ivy
IvyAlice
Messages postés
379
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
14 septembre 2013
32
23 mai 2011 à 14:31
23 mai 2011 à 14:31
Bon je crois que j'ai trouvé le problème.
J'ai remplacé ça
par ça
Et ça marche :-p
Je pense que le demon nagios ne trouvait pas le chemin vers le fichier contenant le pid lorsqu'on le lui donnait de la première façon.
Merci lami20j pour ton aide.
Ivy
J'ai remplacé ça
tmpfile='pwd'/check_<processus>_pid.tmp
par ça
tmpfile="/usr/local/nagios/libexec/others/tests/check_<processus>_pid.tmp"
Et ça marche :-p
Je pense que le demon nagios ne trouvait pas le chemin vers le fichier contenant le pid lorsqu'on le lui donnait de la première façon.
Merci lami20j pour ton aide.
Ivy