bonjour a tous,

j'essai d'ecrire un script bash qui va collecter des données rrd sur différentes machines en executant un fichier sur les machines cible suivant des options indiqué en locale. mon pb c'est que pour l'une d'entre elle je dois rebondir sur une autre machine pour l'atteindre et j'arrive pas a obtenir ce que je souhaite...

voila le script en question :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/bin/bash
set -x
n=0
a=0
b=0
c=0
 
recup_data()
{
chemin="/usr/local/progs/munin/lib"
case $1 in
        machineA)
        comm="$chemin/exports d $2 A |grep \\\"<v>\\\"|sed -e \\\"s/.*\>\<v\>//g\\\" -e \\\"s/\<\\\/v\>.*//g\\\" -e \\\"s/\\\./\,/g\\\
""
        ;;
        machineB)
        comm="$chemin/exports d $2 B |grep \\\"<v>\\\"|sed -e \\\"s/.*\>\<v\>//g\\\" -e \\\"s/\<\\\/v\>.*//g\\\" -e \\\"s/\\\./\,/g\\\
""
        ;;
        machineC)
        comm="$chemin/exports d $2 C |grep \\\"\<v\>\\\"|sed -e \\\"s/.*\>\<v\>//g\\\" -e \\\"s/\<\\\/v\>.*//g\\\" -e \\\"s/./,/g\\\""
        ;;
esac
}
recup_data machineA $1
for i in `echo $comm|xargs ssh noc@machineA`
        do
                if [ $i != "0,0000000000e+00" ]
                        then array_A[$n]=$i
                        n=$((n+1))
                        a=$((a+1))
                fi
done
a=$((a-1))
n=0
recup_data machineB $1
for i in `echo $comm|xargs ssh noc@machineB`
        do
                if [ $i != "0,0000000000e+00" ]
                        then array_B[$n]=$i
                        let n=n+1
                        let b=b+1
                fi
done
let b=b-1
n=0
recup_data machineC $1
for i in `ssh -t machine_rebond "echo $comm|xargs -p ssh -t noc@machineC"`
        do
                if [ $i != "0,0000000000e+00" ]
                        then array_C[$n]=$i
                        let n=n+1
                        let c=c+1
                fi
done
let c=c-1
echo "data A $1"
for i in `seq 0 $a`
        do echo ${array_A[$i]}
done
 
echo "data B $1"
for i in `seq 0 $b`
        do echo ${array_B[$i]}
done
 
echo "data C $1"
for i in `seq 0 $c`
        do echo ${array_C[$i]}
done
quelqu'un paut-il m'aider la dessus ?
si je n'ais pas été assez claire, dites le, j'essairai d'eclaircir les choses

d'avance merci

tophe