Bonjour,
Je souhaite mettre en place un script qui en fonction du status d'un service va m'envoyer un mail.
En gros, mon application nordvpn à une fonction : nordvpn status
Je veux recevoir un mail si la réponse est : Status: Disconnected
J'ai créer une aliase vpn=nordvpn status
J'ai tenté ça mais ne fonctionne pas
#!/bin/bash
shopt -s expand_aliases # Must set this option, else script will not expand ali$
alias vpn='nordvpn status'
Status="vpn"
if [ $vpn = "Status: Disconnected" ]
then
echo "VPN KO !!" | sendmail toto@free.fr.invalid
fi
# Script shell
Posté par grad76 . Évalué à -4.
J'ai fini par trouver :)
[^] # Re: Script shell
Posté par freem . Évalué à 6. Dernière modification le 04 février 2020 à 22:50.
et pourquoi ne pas poster la solution? Si quelqu'un d'autre se pose la question, ça pourrais lui être utile, a moins que seul toi ai le droit d'avoir des réponses sur le net?
Désolé, je suis acerbe, mais le net est un résau pour partager le savoir à la base, pas pour partager le fait d'arriver a faire un truc.
Note: je t'ai pas moinssé, je trouve ça dommage de moinsser sans explications
[^] # Re: Script shell
Posté par liberforce (site web personnel) . Évalué à 7.
En écrivant "désolé, je suis acerbe", tu pourrais te rendre compte que la personne en question ne mérite peut être pas cette colère. Il/elle semble vraisemblablement débuter. En langage bienveillant, ça donne:
[^] # Re: Script shell
Posté par freem . Évalué à 2. Dernière modification le 08 février 2020 à 01:41.
Tu as raison, mes excuses.
[edit]
C'est une bien mauvaise excuse, mais la lassitude des gens qui clament avoir trouvé la solution sans la partager est pesante, alors que je n'ai découvert le web qu'il y a 15 ans, ou les gens semblaient, la ou j'aillais, toujours considérer l'échange comme la base.
Mea culpa, encore.
Cela dis, tu as raison, c'est pas en étant un con que les choses s'améliorerons.
[/edit]
# Script shell
Posté par grad76 . Évalué à 2. Dernière modification le 06 février 2020 à 07:52.
^
[^] # Re: Script shell
Posté par liberforce (site web personnel) . Évalué à 4. Dernière modification le 10 février 2020 à 11:29.
Hello,
il y a un soucis dans ton script. Tu compares la chaîne
nordvpn status
à… je ne sais trop quoi…Si tu veux faire du bash, voici une ressource qui te sauvera la vie:
http://www.tldp.org/LDP/abs/html/abs-guide.html
(et sa traduction française, très légèrement en retard: https://abs.traduc.org/abs-fr/ )
Maintenant analysons les soucis de ton script:
Le problème ici c'est que tu veux la valeur de retour de cette commande, or tu utilises des guillemets simples. Il faudrait des guillemets arrières (backquote, accessibles via la combinaison
AltGr+7
: `). Vu la confusion visuelle pour les débutants, utilise plutôt la forme moderne avec dollar et parenthèses:Ensuite ici tu veux sans doute tester que le texte renvoyé par la commande
nordvpn status
est égal à une chaine de caractères.Dans ce cas utilise des guillemets doubles pour délimiter ta chaine:
"Status: Disconnected"
. De plus, c'est une bonne pratique d'utiliser systématiquement des guillemets doubles quand tu rappelles le contenu d'une variable. Cela permet d'éviter plein de pièges quand la valeur contient des espaces (particulièrement gênant pour gérer les noms de fichiers).Ceci devrait donc fonctionner:
Pour bien apprendre bash, je te conseille aussi d'utiliser un linter comme
shellcheck
, qui doit être disponible sur ta distribution Linux. En lançantshellcheck monscript.sh
, il te remontera des messages sur les potentielles erreurs.Bon scripting :)
[^] # Re: Script shell
Posté par grad76 . Évalué à 1.
merci beaucoup pour ces explications ;-)
En revanche je viens de tester mon script corrigé comme suggéré et j'ai une erreur :
root@srv-vpn:~# ./vpn.sh
./vpn.sh: line 3: Status: Disconnected: command not found
J'ai l'impression qu'il reprends le résultat et l’exécute comme une commande
[^] # Re: Script shell
Posté par liberforce (site web personnel) . Évalué à 2.
Tiens, j'avais répondu mais on dirait que la réponse n'est pas partie…
J'avais oublié de rajouter les crochets autour du test (attention à ne pas oublier les espaces avant et après les crochets):
[^] # Re: Script shell
Posté par grad76 . Évalué à 1.
Merci c'est parfait ;-)
# Script shell
Posté par Amiralgaby . Évalué à 1.
Bonjour grad76,
Si tu veux récupérer le résultat d'une commande je te conseille plus de faire
vpn=$(nordvpn status)
mais je suis aussi débutant pour aider donc ne la prend pas comme une solution qui est sûre ^
Amiralgaby#1847
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.