#1 Le 08/06/2017, à 13:26
- pierrot10
Comment faire pour que variable garde la valeur de 05 et non 5
Bonjour à tous,
Je suis embeter car mes machines sont nommée de la sorte
machine01
machine02
machine03
etc
J'ai un script qui incrémente de 1 à 15. Donc un écho va aficher ceci
1
2
3
4
5
...
14
15
evidemment, je ne pourrais pas faire un scp sur les machines 01 à 09.
Donc quand ma variable NB=01 va incrémenter. elle va passer de
01
à
2
et évidemment. j'aimerais avoir
01
02
03
04
05
...
14
15
Y-a-t-il une astuce pour avoir ce j'ai besoin?
Voici un exemple de mon code:
DOMAIN=en-node
HOSTN_f=05 #Hostname of the First node (Master)
#becarefull node09 to node12 do not belong to WI.
#The script will escape thos nodes
HOSTN_l=16 #Hostname of the Last node
echo ""
echo "**********************************************"
echo "Get remote ECDSA key finger and copy"
echo "to ~/.ssh/known_hosts"
echo "**********************************************"
echo ""
echo ""
echo "Check if we are on the master node"
echo "====="
hostname -s
if [ $(hostname -s) = $DOMAIN$HOSTN_f ]; then
echo "You run the script from $USER@$DOMAIN$HOSTN_f :)"
else
echo "You must run the script from $DOMAIN$HOSTN_f :("
echo "WARNING: The script exits"
echo ""
echo ""
exit
fi
echo ""
cd ~/.ssh
pwd
#NB=$((HOSTN_f+1))
NB=$HOSTN_f
NBL=$((HOSTN_l+1))
T=10
while [ $NB -lt $NBL ]; do
if [ $NB -eq 9 ]; then
NB=13
fi
if [ $NB -eq 10 ]; then
NB=13
fi
if [ $NB -eq 11 ]; then
NB=13
fi
if [ $NB -eq 12 ]; then
NB=13
fi
echo "DEBUG $NB"
#ssh-keyscan -t rsa node$NB >> ~/.ssh/known_hosts
#ssh-keyscan -t rsa inode$NB >> ~/.ssh/known_hosts
#if [ $NB -lt $T ]; then
# ssh-keyscan -t rsa $USER@$DOMAIN0$NB.epfl.ch >> ~/.ssh/known_hosts
#else
# ssh-keyscan -t rsa $USER@$DOMAIN$NB.epfl.ch >> ~/.ssh/known_hosts
#fi
NB=$((NB+1))
done
echo ""
echo ""
echo "DONE"
echo ""
#less known_hosts
echo ""
echo ""
echo ""
Dernière modification par pierrot10 (Le 08/06/2017, à 13:36)
Hors ligne
#2 Le 08/06/2017, à 15:00
- αjet
Re : Comment faire pour que variable garde la valeur de 05 et non 5
J'ai pas bien compris ton code mais si tu souhaites formater un nombre sur deux caracteres (ca se dit padding en anglais au passsage, utile pour chercher sur stack overflow par ex), tu peux formater ton nombre NB avec printf comme ceci
N=`printf %02d $NB`
Le format %02d impose d'avoir deux chiffres, prefixés par 0 si besoin est.
Admettons que tu souhaites un nombre de la forme 00x, il faudrait mettre %03d.
Dernière modification par αjet (Le 08/06/2017, à 15:00)
αjet: ça se prononce alfajet, bordel ! | GMT+1 | Viens poueter avec moi, bordel ! | Mes photos | Shaarli | Fluidbuntu-fr
Hors ligne
#3 Le 08/06/2017, à 18:40
- MicP
Re : Comment faire pour que variable garde la valeur de 05 et non 5
Bonsoir
Si c'est du bash
Tu pourrais aussi t'inspirer du retour (ou te servir) de cette boucle for
domaine="en-node"
for hostn_f in {05..9} {13..16};do
echo "${domaine}${hostn_f}"
done
=======
NOTE :
En bash :
michel@debg53sw:~$ echo {000..9} {013..16}
000 001 002 003 004 005 006 007 008 009 013 014 015 016
michel@debg53sw:~$
Dernière modification par MicP (Le 08/06/2017, à 19:57)
Hors ligne
#4 Le 09/06/2017, à 08:30
- pierrot10
Re : Comment faire pour que variable garde la valeur de 05 et non 5
Merci pour vos réponses. Très utiles
Hors ligne