69 lines
2.7 KiB
Bash
69 lines
2.7 KiB
Bash
#!/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
|
|
REPO_IFACE="$(/opt/opengnsys/bin/getRepoIface)"
|
|
|
|
source $OPENGNSYS/lib/ogfunctions.sh
|
|
|
|
# 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"
|
|
exit 1
|
|
fi
|
|
|
|
# Fichero a enviar (camino completo o relativo al directorio del repositorio).
|
|
FICH="$1"
|
|
if [ "${FICH:0:15}" != "$OPENGNSYS" ]; then
|
|
FICHIMG="$OGIMG/$FICH"
|
|
else
|
|
FICHIMG="$FICH"
|
|
fi
|
|
if [ ! -f "$FICHIMG" ]; then
|
|
echo "$PROG Error: Fichero \"$FICHIMG\" no accesible"
|
|
exit 2
|
|
fi
|
|
|
|
# Parámetros de sesión separado por ":".
|
|
PARAMS=$(echo "$2" | \
|
|
awk -F: '$1~/^[0-9]+$/ {v1=$1}
|
|
tolower($2)~/^half(-duplex)?$/ {v2="--half-duplex"}
|
|
tolower($2)~/^full(-duplex)?$/ {v2="--full-duplex"}
|
|
$3~/^[0-9]{1,3}(\.[0-9]{1,3}){3}$/ {v3=$3}
|
|
$4~/^[0-9]+[mM]$/ {v4=tolower($4)}
|
|
$5~/^[0-9]+$/ {v5=$5}
|
|
$6~/^[0-9]+$/ {v6=$6}
|
|
END {print v1,v2,v3,v4,v5,v6}
|
|
')
|
|
read -re PORTBASE METHOD ADDRESS BITRATE NCLIENTS MAXTIME <<< "$PARAMS"
|
|
echolog "$PROG called with parameters PORTBASE ($PORTBASE) METHOD ($METHOD) ADDRESS ($ADDRESS) BITRATE ($BITRATE) NCLIENTS ($NCLIENTS) MAXTIME ($MAXTIME)"
|
|
if [ -z "$MAXTIME" ]; then
|
|
echolog "$PROG Error: Datos de sesión incorrectos: \"$2\""
|
|
exit 3
|
|
fi
|
|
|
|
# Valores estandar no configurables.
|
|
CERROR="8x8/128"
|
|
|
|
# Envío de fichero por Multicast.
|
|
# Se desabilita el uso de mbuffer: esta versión del upd-sender no la admite.
|
|
#which mbuffer &> /dev/null && MBUFFER="--pipe 'mbuffer -m 20M'"
|
|
|
|
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\""
|
|
$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"
|
|
|