1 | #!/bin/bash |
---|
2 | #@brief Envía un fichero por multicast ORIGEN(fichero) DESTINO(sessionmulticast) |
---|
3 | #@param path_file Camino completo del fichero a enviar |
---|
4 | #@param str_session Datos de sesión (Puerto:Duplex:IP:Mpbs:Nclientes:Timeout) |
---|
5 | |
---|
6 | |
---|
7 | PROG=$(basename $0) |
---|
8 | OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} |
---|
9 | OGIMG=$OPENGNSYS/images |
---|
10 | OGBIN=$OPENGNSYS/bin |
---|
11 | PATH=$PATH:$OGBIN |
---|
12 | |
---|
13 | # Si se solicita, mostrar ayuda. |
---|
14 | if [ "$*" == "help" ]; then |
---|
15 | echo "Formato: $PROG fichero|nombreImagen datosMulticast" |
---|
16 | echo "Ejemplo: $PROG /opt/opengnsys/images/imagen1.pgz 9000:full-duplex:239.194.17.2:70M:20:120" |
---|
17 | echo "Ejemplo: $PROG imagen1 9000:full:239.194.17.2:70M:20:120" |
---|
18 | exit 0 |
---|
19 | fi |
---|
20 | # Error si no se reciben 2 parámetros. |
---|
21 | if [ $# -ne 2 ]; then |
---|
22 | echo "$PROG Error: Formato: $PROG fichero|nombreImagen datosMulticast" >&2 |
---|
23 | exit 1 |
---|
24 | fi |
---|
25 | |
---|
26 | # Fichero de imagen (camino completo o nombre de imagen sin extensión). |
---|
27 | FICH="$1" |
---|
28 | if [ "${FICH:0:1}" != "/" ]; then |
---|
29 | for EXT in pgz img; do |
---|
30 | FICHIMG="$OGIMG/$FICH.$EXT" |
---|
31 | [ -r "$FICHIMG" ] && break |
---|
32 | done |
---|
33 | else |
---|
34 | FICHIMG="$FICH" |
---|
35 | fi |
---|
36 | if [ ! -f "$FICHIMG" ]; then |
---|
37 | echo "$PROG Error: Fichero \"$FICH\" no accesible" >&2 |
---|
38 | exit 2 |
---|
39 | fi |
---|
40 | |
---|
41 | # Parámetros de sesión separado por ":". |
---|
42 | PARAMS=$(echo $2 | \ |
---|
43 | awk -F: '$1~/^[0-9]*$/ {print $1} |
---|
44 | tolower($2)~/^(half)(-duplex)?$/ {print "half-duplex"} |
---|
45 | tolower($2)~/^(full)(-duplex)?$/ {print "full-duplex"} |
---|
46 | $3~/^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$/ {print $3} |
---|
47 | $4~/^[0-9]*[mM]/ {print toupper($4)} |
---|
48 | $5~/^[0-9]*/ {print $5} |
---|
49 | $6~/^[0-9]*/ {print $6} |
---|
50 | ') |
---|
51 | read -e PORTBASE METHOD ADDRESS BITRATE NCLIENTS MAXTIME <<< $PARAMS |
---|
52 | if [ -z "$MAXTIME" ]; then |
---|
53 | echo "$PROG Error: Datos de sesión incorrectos: \"$2\"" >&2 |
---|
54 | exit 1 |
---|
55 | fi |
---|
56 | |
---|
57 | # Valores estandar no configurables. |
---|
58 | CERROR="8x8/128" |
---|
59 | |
---|
60 | # Envío de fichero por Multicast. |
---|
61 | which mbuffer &> /dev/null && MBUFFER="--pipe 'mbuffer -m 20M'" |
---|
62 | ##### ADV v. 1.0 23/02/2011 |
---|
63 | #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" |
---|
64 | /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 |
---|
65 | ##### ADV v. 1.0 23/02/2011 |
---|