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'
Partager