If en une ligne avec condition
Maillon
Messages postés
157
Statut
Membre
-
Maillon Messages postés 157 Statut Membre -
Maillon Messages postés 157 Statut Membre -
Bonjour,
Voilà j'ai une ligne :
NOW_H=`date | awk -F" " '{ print $4 }' | awk -F":" '{ print $1 }'`
ssh machine "(bash && if ([ $NOW_H = date | awk -F" " '{ print $4 }' | awk -F":" '{ print $1 }' ]) ; then echo \"oki\"; else echo \"KO\"; fi )"
Seulement cette ligne ne marche pas, elle ne me retourne pas ce que je veux.
Je souhaiterais que le if test si le nombre dans NOW_H (exécuter sur la machine locale) est égal au nombre sur la machine distante alors j'affiche ok et sinon KO.
Quelqu'un aurait-il une idée pour faire marcher cette ligne ?
Merci beaucoup.
Cordialement,
Voilà j'ai une ligne :
NOW_H=`date | awk -F" " '{ print $4 }' | awk -F":" '{ print $1 }'`
ssh machine "(bash && if ([ $NOW_H = date | awk -F" " '{ print $4 }' | awk -F":" '{ print $1 }' ]) ; then echo \"oki\"; else echo \"KO\"; fi )"
Seulement cette ligne ne marche pas, elle ne me retourne pas ce que je veux.
Je souhaiterais que le if test si le nombre dans NOW_H (exécuter sur la machine locale) est égal au nombre sur la machine distante alors j'affiche ok et sinon KO.
Quelqu'un aurait-il une idée pour faire marcher cette ligne ?
Merci beaucoup.
Cordialement,
A voir également:
- If sur une ligne
- Partager photos en ligne - Guide
- Mètre en ligne - Guide
- Formulaire en ligne de meta - Guide
- Apparaitre hors ligne instagram - Guide
- Aller à la ligne dans une cellule excel - Guide
4 réponses
Salut,
Essaye comme ça :
Essaye comme ça :
NOW_H=$(date +%H) if [ "$NOW_H" = "$(ssh machine date +%H)" ]; then echo \"oki\"; else echo \"KO\"; fi )";-)
C'est bon je crois que j'ai trouvé.
En fait j'ai fais ça et ça marche (ça à l'air en tout cas) :
dsh -g GROUPMachine1 "(bash && if ([ `date +%H` == $now_h ] && [ `date +%M` == $now_m ]); then echo "ok"; else date +%H:%M ; fi)"
A voir je continue de tester pour voir si c'est ça.
En fait j'ai fais ça et ça marche (ça à l'air en tout cas) :
dsh -g GROUPMachine1 "(bash && if ([ `date +%H` == $now_h ] && [ `date +%M` == $now_m ]); then echo "ok"; else date +%H:%M ; fi)"
A voir je continue de tester pour voir si c'est ça.
Sinon tu peux utiliser les opérateur ternaire pour simplifier ta ligne.
Exemple :
Variable isTrue = true;
isTrue==true?echo 'ok':echo 'non ok'
on peut lire cela de la manière suivante :
si isTrue égale true alors on affiche 'ok sinon on affiche 'non ok'
Exemple :
Variable isTrue = true;
isTrue==true?echo 'ok':echo 'non ok'
on peut lire cela de la manière suivante :
si isTrue égale true alors on affiche 'ok sinon on affiche 'non ok'
Merci nouille je le serai pour la prochaine fois ;-)
Par contre j'ai un soucis quand j'exécute mon fichier :
dsh: must use -w flag without CLUSTER environment setting.
Et j'ai pas de .bashrc dans mon profile.
Faut que je le crée ? J'utilise comme shell le bash.
CLUSTER n'est pas défini dans mes variable d'environnement et je pense qu'il faudrait le rajouter mais de manière permanente mais je sais pas comment faire.
Merci.
Cordialement,
Par contre j'ai un soucis quand j'exécute mon fichier :
dsh: must use -w flag without CLUSTER environment setting.
Et j'ai pas de .bashrc dans mon profile.
Faut que je le crée ? J'utilise comme shell le bash.
CLUSTER n'est pas défini dans mes variable d'environnement et je pense qu'il faudrait le rajouter mais de manière permanente mais je sais pas comment faire.
Merci.
Cordialement,
script.sh: syntax error at line 7: `NOW_H=$' unexpected
De plus est ce que ça marchera dans le if si à la place de ssh je met dsh -g GROUP_MACHINE etc ... ?
Merci.
Cordialement,
De plus j'ai fait une erreur dans ma syntaxe précédente (il faut enlever l'a dernière parenthèse et le dernier guillemet après le fi (résidu de ta syntaxe)) :
;-(
Oui j'ai vu après la parenthèse à la fin et j'ai corrigé.
Voici mon script au complet :
#!/bin/sh -f
#######################################
############# ATTENTION ###############
# Le script va verifier l'heure sur : #
#######################################
#Liste
echo ""
echo "GROUPMachine1"
echo "GROUPMachine2"
echo ""
echo "Voulez-vous continuer ? (oui/non)"
read valid
case $valid in
oui)
echo "Voici l'heure actuelle de la machine locale (date de reference) : `date '+%d/%m/%Y %T'`"
now_h=`date +%H`
now_m=`date +%M`
dsh -g GROUPMachine1,GroupMachine2 "(if ([ date +%H == $now_h ] && [ date +%M == $now_m ]; then echo "ok"; else echo "ko";fi)"
non)
echo "Operation annule"
;;
esac;
Voici ce que j'aimerai avoir (et qui marche ^^)
Par contre avec ta ligne :
if [ "$now_h" = "$(ssh machine_test date +%H)" ]; then echo \"oki\"; else date; fi
Ca ne gère pas le dsh apparement si je fais ça marche pas.
if [ "$now_h" = "$(dsh -g GROUPMachine1 date +%H)" ]; then echo \"oki\"; else date; fi