[85b029f] | 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 | |
---|
[993b77a] | 7 | PROG=$(basename "$0") |
---|
[526298b] | 8 | OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} |
---|
| 9 | OGIMG=$OPENGNSYS/images |
---|
| 10 | OGBIN=$OPENGNSYS/bin |
---|
| 11 | PATH=$PATH:$OGBIN |
---|
[01ae374d] | 12 | REPO_IFACE="$(/opt/opengnsys/bin/getRepoIface)" |
---|
| 13 | |
---|
[c28eefa] | 14 | source $OPENGNSYS/lib/ogfunctions.sh |
---|
| 15 | |
---|
[85b029f] | 16 | # Si se solicita, mostrar ayuda. |
---|
| 17 | if [ "$*" == "help" ]; then |
---|
[526298b] | 18 | echo "Formato: $PROG fichero|nombreImagen datosMulticast" |
---|
[cdc5f1f] | 19 | echo "Ejemplo: $PROG /opt/opengnsys/images/imagen1.pgz 9000:full-duplex:239.194.17.2:70M:20:120" |
---|
| 20 | echo "Ejemplo: $PROG imagen1 9000:full:239.194.17.2:70M:20:120" |
---|
[85b029f] | 21 | exit 0 |
---|
| 22 | fi |
---|
| 23 | # Error si no se reciben 2 parámetros. |
---|
| 24 | if [ $# -ne 2 ]; then |
---|
[e8460d2] | 25 | echo "$PROG Error: Formato: $PROG fichero|nombreImagen datosMulticast" |
---|
[85b029f] | 26 | exit 1 |
---|
| 27 | fi |
---|
| 28 | |
---|
[bfc4d9c] | 29 | # Fichero a enviar (camino completo o relativo al directorio del repositorio). |
---|
[526298b] | 30 | FICH="$1" |
---|
[e031dd38] | 31 | if [ "${FICH:0:15}" != "$OPENGNSYS" ]; then |
---|
[bfc4d9c] | 32 | FICHIMG="$OGIMG/$FICH" |
---|
[cdc5f1f] | 33 | else |
---|
| 34 | FICHIMG="$FICH" |
---|
| 35 | fi |
---|
[3f9764a] | 36 | if [ ! -f "$FICHIMG" ]; then |
---|
[bfc4d9c] | 37 | echo "$PROG Error: Fichero \"$FICHIMG\" no accesible" |
---|
[526298b] | 38 | exit 2 |
---|
| 39 | fi |
---|
| 40 | |
---|
[85b029f] | 41 | # Parámetros de sesión separado por ":". |
---|
[993b77a] | 42 | PARAMS=$(echo "$2" | \ |
---|
| 43 | awk -F: '$1~/^[0-9]+$/ {v1=$1} |
---|
| 44 | tolower($2)~/^half(-duplex)?$/ {v2="--half-duplex"} |
---|
| 45 | tolower($2)~/^full(-duplex)?$/ {v2="--full-duplex"} |
---|
[063caa5] | 46 | $3~/^[0-9]{1,3}(\.[0-9]{1,3}){3}$/ {v3=$3} |
---|
[993b77a] | 47 | $4~/^[0-9]+[mM]$/ {v4=tolower($4)} |
---|
| 48 | $5~/^[0-9]+$/ {v5=$5} |
---|
| 49 | $6~/^[0-9]+$/ {v6=$6} |
---|
| 50 | END {print v1,v2,v3,v4,v5,v6} |
---|
[fd11e20] | 51 | ') |
---|
[993b77a] | 52 | read -re PORTBASE METHOD ADDRESS BITRATE NCLIENTS MAXTIME <<< "$PARAMS" |
---|
[c28eefa] | 53 | echolog "$PROG called with parameters PORTBASE ($PORTBASE) METHOD ($METHOD) ADDRESS ($ADDRESS) BITRATE ($BITRATE) NCLIENTS ($NCLIENTS) MAXTIME ($MAXTIME)" |
---|
[526298b] | 54 | if [ -z "$MAXTIME" ]; then |
---|
[c28eefa] | 55 | echolog "$PROG Error: Datos de sesión incorrectos: \"$2\"" |
---|
[e8460d2] | 56 | exit 3 |
---|
[526298b] | 57 | fi |
---|
[85b029f] | 58 | |
---|
[fd11e20] | 59 | # Valores estandar no configurables. |
---|
| 60 | CERROR="8x8/128" |
---|
[85b029f] | 61 | |
---|
| 62 | # Envío de fichero por Multicast. |
---|
[993b77a] | 63 | # Se desabilita el uso de mbuffer: esta versión del upd-sender no la admite. |
---|
[c66eccd] | 64 | #which mbuffer &> /dev/null && MBUFFER="--pipe 'mbuffer -m 20M'" |
---|
[c28eefa] | 65 | |
---|
| 66 | echolog "Invoking $OGBIN/udp-sender \"$MBUFFER\" --nokbd --retries-until-drop 65 --portbase \"$PORTBASE\" \"$METHOD\" --interface \"$REPO_IFACE\" --mcast-data-address \"$ADDRESS\" --fec \"$CERROR\" --max-bitrate \"$BITRATE\" --ttl 16 --min-clients \"$NCLIENTS\" --max-wait \"$MAXTIME\" --file \"$FICHIMG\"" |
---|
[993b77a] | 67 | $OGBIN/udp-sender "$MBUFFER" --nokbd --retries-until-drop 65 --portbase "$PORTBASE" "$METHOD" --interface "$REPO_IFACE" --mcast-data-address "$ADDRESS" --fec "$CERROR" --max-bitrate "$BITRATE" --ttl 16 --min-clients "$NCLIENTS" --max-wait "$MAXTIME" --file "$FICHIMG" |
---|
[3cd3133] | 68 | |
---|