If en une ligne avec condition

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,

4 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

Essaye comme ça :
NOW_H=$(date +%H)

if [ "$NOW_H" = "$(ssh machine date +%H)" ]; then echo \"oki\"; else echo \"KO\"; fi )"
;-)
0
Maillon Messages postés 157 Statut Membre 5
 
Il me met :

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,
0
jipicy Messages postés 41342 Statut Modérateur 4 896 > Maillon Messages postés 157 Statut Membre
 
Affiche ton script en entier s'il te plaît (la ligne 7 pour moi ne représente rien)

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)) :
if [ "$NOW_H" = "$(ssh machine date +%H)" ]; then echo \"oki\"; else echo \"KO\"; fi
;-(
0
Maillon Messages postés 157 Statut Membre 5 > jipicy Messages postés 41342 Statut Modérateur
 
En fait l'erreur unexpected je l'ai réglé en faisant $NOW_H=`date +%H`
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
0
Maillon Messages postés 157 Statut Membre 5
 
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.
0
nounouille44 Messages postés 15 Statut Membre 1
 
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'
0
Maillon Messages postés 157 Statut Membre 5
 
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,
0
Maillon Messages postés 157 Statut Membre 5
 
C'est bon j'ai trouvé.
En fait j'ai rajouté dans le .profile :
CLUSTER=/export/home/user/.clusterlist
export PATH PS1 CLUSTER

Et ça marche pour l'instant :)

Merci en tout cas pour votre aide ;-)

Cordialement,
0