Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/06/2017, à 14: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, à 14:36)

Hors ligne

#2 Le 08/06/2017, à 16: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, à 16: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, à 19: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, à 20:57)

Hors ligne

#4 Le 09/06/2017, à 09: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