summaryrefslogtreecommitdiffstats
path: root/repoman/bin/sendFileMcast
blob: cbe3271fb25e4196766c13b5f90a855cd9dd3500 (plain)
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
#!/bin/bash
#@brief   Envía un fichero por multicast   ORIGEN(fichero) DESTINO(sessionmulticast)
#@param   path_file      Camino completo del fichero a enviar
#@param   str_session    Datos de sesión (Puerto:Duplex:IP:Mpbs:Nclientes:Timeout)


PROG=$(basename $0)
OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
OGIMG=$OPENGNSYS/images
OGBIN=$OPENGNSYS/bin
PATH=$PATH:$OGBIN
 
# Si se solicita, mostrar ayuda.
if [ "$*" == "help" ]; then
    echo "Formato: $PROG fichero|nombreImagen datosMulticast"
    echo "Ejemplo: $PROG /opt/opengnsys/images/imagen1.pgz 9000:full-duplex:239.194.17.2:70M:20:120"
    echo "Ejemplo: $PROG imagen1 9000:full:239.194.17.2:70M:20:120"
    exit 0
fi
# Error si no se reciben 2 parámetros.
if [ $# -ne 2 ]; then
    echo "$PROG Error: Formato: $PROG fichero|nombreImagen datosMulticast" >&2
    exit 1
fi

# Fichero de imagen (camino completo o nombre de imagen sin extensión).
FICH="$1"
if [ "${FICH:0:1}" != "/" ]; then
    for EXT in pgz img; do
        FICHIMG="$OGIMG/$FICH.$EXT"
        [ -r "$FICHIMG" ] && break
    done
else
    FICHIMG="$FICH"
fi
if [ ! -f "$FICHIMG" ]; then
    echo "$PROG Error: Fichero \"$FICH\" no accesible" >&2
    exit 2
fi

# Parámetros de sesión separado por ":".
PARAMS=$(echo $2 | \
	awk -F: '$1~/^[0-9]*$/ {print $1}
		 tolower($2)~/^(half)(-duplex)?$/ {print "half-duplex"}
		 tolower($2)~/^(full)(-duplex)?$/ {print "full-duplex"}
		 $3~/^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$/ {print $3}
		 $4~/^[0-9]*[mM]/ {print toupper($4)}
		 $5~/^[0-9]*/ {print $5}
		 $6~/^[0-9]*/ {print $6}
		')
read -e PORTBASE METHOD ADDRESS BITRATE NCLIENTS MAXTIME <<< $PARAMS
if [ -z "$MAXTIME" ]; then
    echo "$PROG Error: Datos de sesión incorrectos: \"$2\"" >&2
    exit 1
fi

# Valores estandar no configurables.
CERROR="8x8/128"

# Envío de fichero por Multicast.
which mbuffer &> /dev/null && MBUFFER="--pipe 'mbuffer -m 20M'" 
##### ADV v. 1.0 23/02/2011
#version 0.10 # udp-sender $MBUFFER --portbase $PORTBASE --$METHOD --mcast-data-address $ADDRESS --fec $CERROR --max-bitrate $BITRATE --ttl 1 --min-clients $NCLIENTS --max-wait $MAXTIME --file "$FICHIMG"
/opt/opengnsys/bin/udp-sender $MBUFFER --nokbd --retries-until-drop 65 --portbase $PORTBASE --$METHOD --mcast-data-address $ADDRESS --fec $CERROR --max-bitrate $BITRATE --ttl 1 --min-clients $NCLIENTS --max-wait $MAXTIME --file "$FICHIMG" --log /opt/opengnsys/log/ogAdmRepoMcast.log
##### ADV v. 1.0  23/02/2011