#
# ======================================================================
# Define options
# ======================================================================
#
set opt(chan) Channel/WirelessChannel
set opt(netif) Phy/WirelessPhy
set opt(mac) Mac/802_11
set opt(ifq) Queue/DropTail/PriQueue
set opt(prop) Propagation/Shadowing
set opt(ll) LL
set opt(ant) Antenna/OmniAntenna
set opt(x) 100 ;# X dimension of the topography
set opt(y) 100 ;# Y dimension of the topography
set opt(ifqlen) 50 ;# max packet in ifq
set opt(seed) 0.0 ;# seed for ns-2 rand()
set opt(nn) 3 ;# how many wireless nodes are simulated
set opt(rp) AODV ;# No Routing protocol
set opt(stop) 20 ;# simulation time
# UDP Agent
Agent/UDP set packetSize_ 2000 ;# now the default maximum segment size is 2000 bytes
;# so the 1500 byte packet is not fragmented
Mac/802_11 set RTSThreshold_ 3000 ;# disable RTS/CTS
Mac/802_11 set ShortRetryLimit_ 4
Mac/802_11 set CWMin_ 31
Mac/802_11 set CWMax_ 1023
# FHSS (IEEE 802.11)
Mac/802_11 set SlotTime_ 0.000020
Mac/802_11 set SIFS_ 0.000010
Mac/802_11 set PreambleLength_ 64
Mac/802_11 set PLCPHeaderLength_ 128
Mac/802_11 set PLCPDataRate_ 1.0e6
Mac/802_11 set dataRate_ 11.0e6
Mac/802_11 set basicRate_ 2.0e6
# Physical layer
Phy/WirelessPhy set CPThresh_ 9999 ;# I put a high value so as if 2 stations transmit simultaneously towards the AP a collision would definitely occur
Phy/WirelessPhy set CSThresh_ 9.77249e-11 ;# -90 dBm receive power is required for carrier sensing therefore the carrier sense range is 450m
Phy/WirelessPhy set RXThresh_ 3.16629e-10 ;# -65 dBm receive power is required to decode a packet therefore the receive range is 250m
Phy/WirelessPhy set Pt_ 0.2818
Phy/WirelessPhy set freq_ 2.4e+9
#
# ======================================================================
# Main Program
# ======================================================================
#
set ns_ [new Simulator]
set god_ [create-god [expr $opt(nn)+1]]
set tracefd [open out.tr w]
$ns_ trace-all $tracefd
set tracenam [open out.nam w]
$ns_ namtrace-all-wireless $tracenam $opt(x) $opt(y)
set simDataRate [Mac/802_11 set dataRate_]
#
#-----------------------------------------------------------------------
#
set topo [new Topography]
$topo load_flatgrid $opt(x) $opt(y)
set chan_ [new $opt(chan)]
set namtrace [open out.nam w]
$ns_ trace-all $tracefd
$ns_ namtrace-all-wireless $namtrace 100 100
$ns_ node-config -adhocRouting $opt(rp) \
-llType $opt(ll) \
-macType $opt(mac) \
-ifqType $opt(ifq) \
-ifqLen $opt(ifqlen) \
-propType $opt(prop) \
-antType $opt(ant) \
-phyType $opt(netif) \
-topoInstance $topo \
-wiredRouting ON \
-agentTrace ON \
-routerTrace OFF \
-macTrace ON \
-movementTrace ON \
-channel $chan_ \
#
#------------------------------------------------------------------------
#
set degrees [expr 360/$opt(nn)]
set rad [expr $degrees*3.1415927/180]
$ns_ node-config -wiredRouting OFF
#CREIAMO UN NODO SPECIFICANDO L'INDIRIZZO DOPO IL METODO NODO COME PARAMETRO]
set Access_Point [$ns_ node 0]
$Access_Point random-motion 0
$Access_Point set X_ 30.0
$Access_Point set Y_ 30.0
$Access_Point set Z_ 0.0
$ns_ at 0 "$Access_Point setdest 30. 30. 1000"
puts "Access Point coord. X=[$Access_Point set X_] Y=X=[$Access_Point set Y_]"
for {set j 0} {$j < $opt(nn)} {incr j} {
#CREIAMO I NODI SPECIFICANDO GLI INDIRIZZI 0.0.x CHE ABBIAMO MEMORIZZATO NEL VETTORE addr_domain
set node_($j) [$ns_ node [expr $j+1]]
$node_($j) random-motion 0
$node_($j) set X_ 30
$node_($j) set Y_ 30
}
#I NODI MOBILI SONO POSTI A CERCHIO ATTORNO ALL'AP
for {set j 0} {$j < $opt(nn)} {incr j} {
set coseno [expr cos([expr $j * $rad])]
set seno [expr sin([expr $j * $rad])]
$ns_ at 0 "$node_($j) setdest [expr 30 + 20 * $coseno] [expr 30 + 20 * $seno] 1000."
puts "placing node $j: X=[format %.2f [expr 30+20*$coseno]] Y=[format %.2f [expr 30+20*$seno] ]"
}
#
#-------------------------------------------------------------------------
# TRAFFIC
#-------------------------------------------------------------------------
#
proc attach-cbr-traffic { node sink size rate } {
global ns_
set udp [new Agent/UDP]
$ns_ attach-agent $node $udp
set traffic [new Application/Traffic/CBR]
$traffic set packetSize_ $size
$traffic set rate_ $rate
$traffic attach-agent $udp
$ns_ connect $udp $sink
return $traffic
}
#
#--------------------------------------------------------------------------
#
# Access Point -> Receiver, Mobile Nodes --> Transmitters
set src_rate [expr ($simDataRate/$opt(nn)+30000)]
puts "Rate delle sorgenti: [format %.2f $src_rate]"
for {set j 0} {$j < $opt(nn)} {incr j} {
set sink_($j) [new Agent/LossMonitor]
$ns_ attach-agent $Access_Point $sink_($j)
set src($j) [attach-cbr-traffic $node_($j) $sink_($j) 1500 $src_rate]
$ns_ at 1.0 "$src($j) start"
$ns_ at $opt(stop) "$src($j) stop"
}
#
#Tracing...
for {set j 0} {$j < $opt(nn)} {incr j} {
set trace_file_($j) [open bw_node_$j.tr w]
set bytes_file_($j) [open bytes_rx_$j.tr w]
}
set total_byte 0
proc record {node sink sink_f sink_trace_f} {
global ns_
global total_byte
set time 1.
set bw_($node) [$sink set bytes_]
set now [$ns_ now]
puts $sink_trace_f "[format %.2f $now ] [expr double($bw_($node)*8.)/$time/1000] Kbps"
incr total_byte $bw_($node)
$sink set bytes_ 0
$ns_ at [expr $now+$time] "record {$node} {$sink} {$sink_f} {$sink_trace_f}"
}
#
#Finishing...
proc finish {trace_file bytes_file} {
global ns_ tracefd total_byte opt
$ns_ flush-trace
close $trace_file
close $bytes_file
close $tracefd
puts "Total throughput [format %.2f [expr $total_byte*8./($opt(stop)-1)/1000000.]] Mbps"
exec nam out.nam
exit 0
}
for {set j 0} {$j < $opt(nn)} {incr j} {
$ns_ at 0.100 "record {$j} {$sink_($j)} {$bytes_file_($j)} {$trace_file_($j)}"
$ns_ at $opt(stop) " finish {$trace_file_($j)} {$bytes_file_($j)}"
}
#
#------------------------------------------------------------------------------
# Tell nodes when the simulation ends
#------------------------------------------------------------------------------
#
for {set i 0} {$i < $opt(nn) } {incr i} {
$ns_ at $opt(stop).001 "$node_($i) reset";
}
$ns_ at $opt(stop).0002 "puts \"NS EXITING!\" ; $ns_ halt"
$ns_ run
Hasan Al Banna
catatan ku saat ku melangkah!
Selasa, 17 Januari 2012
Kamis, 29 Desember 2011
Cront dan Crontab
Cron merupakan sebuah Daemon yang menjalankan perintah yang dijadwalkan. Daemon adalah program di server yang biasanya berjalan di
belakang layar (OnnoWpurbo).
Crontab adalah program yang digunakan untuk menginstall, di install atau daftar tabel digunakan untuk menggerakkan daemon cron di Vixie Cron.
Contoh Crontab
Baris ini mengeksekusi perintah pada 02:00 pada tanggal 12 setiap bulan itu hari Minggu atau Sabtu jatuh pada.
Kalkulator Function Shell Bash
Membuat kalkulator
sederhana dilengkapi dengan menu pilihan dan menggunakan fungsi
Script:
#!/bin/bash
##program menggunakan fungsi
penambahan(){ #Fungsi untuk penambahan angka
echo " Masukkan angka pertama : "
read p
echo " Masukkan angka kedua : "
read q
Tambah=$(echo "$p + $q" | bc)
echo "Hasil penambahan angka =
$Tambah"
sleep 3
} #Akhir Fungsi
Threading
Menjalankan dua aplikasi
secara bersamaan menggunakan threading. Contohnya kita membuat sebuah triangle....
codingnya :
#!/bin/bash
bintang(){
echo "Triangle"
for (( i=1; i<=5; i++ ))
do
for (( k=5-i; k>=1; k-- ))
do
echo -n " "
done
for (( j=1; j<=i; j++ ))
Kamis, 22 Desember 2011
fungsi ps aux di Shell
ps aux berfungsi untuk melihat kegiatan user atau root bisa di bilang history gitu gan.
langsung gan ke tkp
Menampilkan daftar ps aux dari nama user
Langganan:
Postingan (Atom)