svp qlq'un peut m'aider j'ai un probleme concernat l'execution de script bash liée à un fichier tcl :
les fichiers :
================================
fichier start.sh
================================
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
#!/bin/bash

# Config. des chemins
TCL=simulations
AWK=scripts_awk
RESULT_DIR=results
RESULT=./results.tr
NS= /home/mohammed/planb/ns-allinone-2.35/ns-2.35/ns
# set -x
rm $RESULT_DIR/*
# On effectue l'ensemble des simulation contenues dans le répertoire
for f in ./$TCL/*.tcl ; do
echo "*** Operate $f"
TCL_FILE=${f%.*}
TCL_FILE=${TCL_FILE##*/}
j=1
# On fait varier le CRB de 1 à 12
while [ $j -lt 13 ] ; do
echo "*** CBR=$j"
i=0
# On fait 20 simulations
while [ $i -lt 20 ] ; do
echo "****** Simulation #$i"
$NS $f $j
for x in ./$AWK/*.awk ; do
echo "********* Operate $x"
AWK_FILE=${x%.*}
AWK_FILE=${AWK_FILE##*/}
$x $RESULT >> "$RESULT_DIR/$TCL_FILE-$AWK_FILE-$j.csv"
done
i=$[$i+1]
echo
done
# On fait la moyenne des valeurs, pr export en courbe
echo "****** Calculate average for CBR=$j"
for x in ./$AWK/*.awk ; do
AWK_FILE=${x%.*}
AWK_FILE=${AWK_FILE##*/}
echo -n "$j " >> "$RESULT_DIR/curve-$TCL_FILE-$AWK_FILE.csv"
./calc_average.awk $RESULT_DIR/$TCL_FILE-$AWK_FILE-$j.csv >> "$RESULT_DIR/curve-$TCL_FILE-$AWK_FILE.csv"
done
j=$[$j+1]
echo
done
done
rm $RESULT
rm *.nam
========================================================================================
script simulationAdHocStatic.tcl:
========================================================================================
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# ======================================================================
# Define options
# ======================================================================
# Set the parameters that we will use for wireless communications
set val(chan)        Channel/WirelessChannel      ;# channel type
set val(prop)        Propagation/TwoRayGround     ;# radio-propagation model
set val(netif)       Phy/WirelessPhy              ;# network interface type
set val(mac)         Mac/802_11                   ;# MAC type
set val(ifq)         Queue/DropTail/PriQueue      ;# interface queue type
set val(ll)          LL                           ;# link layer type
set val(ant)         Antenna/OmniAntenna          ;# antenna model
set val(ifqlen) 50; # Taille de la queue
set val(x) 1000; # X Largeur de la région (en mètres)
set val(y) 1000; # Y Hauteur de la région (en mètres)
set val(nn) 25; # Nombre de nœuds
set val(stop) 30; # Temps de la simulation (en secondes)
set val(sources) [lindex $argv 0]; # Nombre de sources passé enargument
set val(packet_size) 512; # Taille des paquets envoyés (en octets)
set val(interval) 0.1; # Intervalle d'envoi de paquets (en secondes)
set val(rp) AODV; # Protocole de routage
## Mobilité
# Définition de la variable de Random pour le placement des nœuds dans la région
global defaultRNG
$defaultRNG seed 0 
set sizeRNG [new RNG]
$sizeRNG next-substream
# Variable de random utilisée pour un point sur la grille
set size_ [new RandomVariable/Uniform]; # Variable Random uniforme
$size_ set min_ 1; # Valeur minimum
$size_ set max_ 999; # Valeur maximum
$size_ use-rng $sizeRNG
# Variable de random utilisée pour une vitesse de déplacement
set sizespeed_ [new RandomVariable/Uniform]; # Variable Random uniforme
$sizespeed_ set min_ 1; # Valeur minimum
$sizespeed_ set max_ 10; # Valeur maximum
$sizespeed_ use-rng $sizeRNG
# Création du simulateur NS
set ns [new Simulator]
# Paramétrage de l'antenne
Antenna/OmniAntenna set X_ 0; # Direction de X
Antenna/OmniAntenna set Y_ 0; # Direction de Y
Antenna/OmniAntenna set Z_ 1.5; # Direction de Z
Antenna/OmniAntenna set Gt_ 1.0; # Gain de transmission
Antenna/OmniAntenna set Gr_ 1.0; # Gain de réception
# Paramétrage de l'interface réseau
Phy/WirelessPhy set CPThresh_ 10.0; # Collision Threshold
Phy/WirelessPhy set CSThresh_ 1.559e-11;# Portée de détection : 500 mètres
Phy/WirelessPhy set RXThresh_ 0.652e-10; # Portée de communication : 250 mètres (-91,1db)
Phy/WirelessPhy set bandwidth_ 2e6; # Capacité du médium : 2Mbits
Phy/WirelessPhy set Pt_ 0.28183815; # Puissance de transmission :24.5dbm
Phy/WirelessPhy set freq_ 914e+6; # Fréquence : 914MHz
Phy/WirelessPhy set L_ 1.0; # System Loss Factor
# Création des fichiers de trace
set f [open results.tr w]
$ns trace-all $f
$ns eventtrace-all
set nf [open aodv_sim.nam w]
$ns namtrace-all $nf
$ns namtrace-all-wireless $nf $val(x) $val(y)
# Topographie de la simulation
set topo [new Topography];
# Création de la région pour la simulation
$topo load_flatgrid $val(x) $val(y)
# Création du God
create-god $val(nn)
# Création du canal
set chan [new $val(chan)]
# Configuration du nœud
$ns node-config -adhocRouting $val(rp) \
-llType $val(ll) \
-macType $val(mac) \
-ifqType $val(ifq) \
-ifqLen $val(ifqlen) \
-antType $val(ant) \
-propType $val(prop) \
-phyType $val(netif) \
-channel $chan \
-topoInstance $topo \
-agentTrace ON \
-routerTrace ON \
-macTrace ON \
-movementTrace OFF
# Création des nœuds pour la simulation
for {set i 0} {$i < $val(nn)} {incr i} {
set node_($i) [$ns node]
$node_($i) random-motion 0
}
# Position des nœuds dans la région de manière aléatoire
# Spécification des déplacements aléatoires
for {set i 0} {$i < $val(nn)} {incr i} {
set X [expr round([$size_ value])]; # Position X en random sur la grille
set Y [expr round([$size_ value])]; # Position Y en random sur la grille
$node_($i) set X_ $X]; # Position X du nœud sur la grille
$node_($i) set Y_ $Y]; # Position Y du nœud sur la grille
$node_($i) set Z_ 0.0; # Position Z du nœud sur la grille
set speed [expr round([$sizespeed_ value])]; # vitesse en random entre 1m/s et 10m/s
set newX [expr round([$size_ value])]; # Position X en random sur la grille
set newY [expr round([$size_ value])]; # Position Y en random sur la grille
# Définition du premier mouvement
$ns at [expr 0.1 * $i] "$node_($i) setdest $newX $newY $speed";
# Définition des mouvements suivants si la simulation n'est pas terminée
$ns at [expr 0.1 * $i] "setNewDest $node_($i) $newX $newY";
}
# Méthode qui permet de définir une nouvelle destination au nœud mobile
proc setNewDest {node currentX currentY} {
global ns sizespeed_ size_; # Récupère les variables du programme
set speed [expr round([$sizespeed_ value])]; # Vitesse en random entre 1m/s et 10m/s
set nextX [expr round([$size_ value])]; # Position X en random sur la grille
set nextY [expr round([$size_ value])]; # Position Y en random sur la grille
set now [$ns now]; # Date courante de la simulation
set longX [expr $nextX-$currentX]; # Distance en X à parcourir
set longY [expr $nextY-$currentY]; # Distance en Y à parcourir
# Calcul de la longueur du chemin
set distance [expr sqrt(($longX*$longX)+($longY*$longY))];
# Détermination de la date d'arrivée au point destination
set arrivalDate [expr $now + [expr $distance/$speed]];
# Détermination de la prochaine date de mouvement après 5 secondes de pause
set nextMove [expr $arrivalDate + 5.0];
# Définition de la prochaine destination
$ns at $now "$node setdest $nextX $nextY $speed";
# Définition du prochain mouvement si la simulation n'est pas terminée
$ns at $nextMove "setNewDest $node $nextX $nextY";
}
# Création des agents pour les nœuds sources
for {set i 0} {$i < $val(sources)} {incr i} {
# Création de l'agent UDP
set udp_($i) [new Agent/UDP]
$ns attach-agent $node_($i) $udp_($i)
# Création de l'agent Null
set null_($i) [new Agent/Null]
$ns attach-agent $node_([expr [expr $val(nn) - 1] - $i]) $null_($i)
$ns connect $udp_($i) $null_($i)
# Création et paramètrage du CBR
set cbr_($i) [new Application/Traffic/CBR];
$cbr_($i) attach-agent $udp_($i)
$cbr_($i) set type_ CBR; # Type du CBR
$cbr_($i) set packet_size_ $val(packet_size); # Taille des paquets envoyés
$cbr_($i) set rate_ [expr $val(packet_size) * 8 / [$ns delay_parse
$val(interval)]]; # Taux
$cbr_($i) set random_ false
# Début d'envoi de paquets pas en même temps, sinon Erreur de segmentation
$ns at [expr 0.1 * $i] "$cbr_($i) start"; # Début d'envoi de paquets
$ns at $val(stop) "$cbr_($i) stop"; # Fin d'envoi de paquets
}
# Positionne les nœuds sur la grille
for {set i 0} {$i < $val(nn)} {incr i} {
$ns initial_node_pos $node_($i) 30; # 30 : taille du nœud dans nam
}
# Arrêt de la simulation
$ns at $val(stop) "finish"
$ns at [expr $val(stop) + 0.1] "$ns halt"
# Fonction appelée pour terminer la simulation
proc finish {} {
global ns f nf val
$ns flush-trace
close $f
close $nf
exec nam aodv_sim.nam &
exit 0
}
# Début de la simulation
$ns run
=============================================================================
l'erreur qu'il m'affiche lorsuque je tappe bash start.sh est comme suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
****** Simulation #19
./simulations/simulationAdHocStatic.tcl: line 6: syntax error near unexpected token `('
./simulations/simulationAdHocStatic.tcl: line 6: `set val(chan)        Channel/WirelessChannel      ;# channel type'