View previous topic :: View next topic |
Author |
Message |
edgar_uriel84 Guru
Joined: 21 Dec 2008 Posts: 485 Location: Tultitlan, México
|
Posted: Sat Jan 19, 2013 5:10 am Post subject: Ayuda script de bash |
|
|
Hola, acabo de hacer un pequeño script de bash para grabar radio por internet (usando mplayer) que pienso agregarlo a cron para que funcione automáticamente. El problema que tengo es que el parámetro -endpos no funciona, cuando lo pruebo en consola directamente sirve bien, pero dentro del script no, lo que se de bash scripting es limitado, supongo que debo manejar un PID y terminarlo manualmente... leeré guías de bash pero si alguien sugiere o sabe una solución dejo el script:
Code: |
#!/bin/bash
help() {
echo "Script que sintoniza un streaming"
echo "radio [OPCIONES]"
echo "Opciones:"
echo "-m <MODE> Opciones: silent - Graba todo el tiempo"
echo " capture (default) - Comienza la grabación al teclear C"
echo " y termina presionando C nuevamente. OJO:"
echo " ¡PRESIONAR NUEVAMENTE REESCRIBIRÁ EL ARCHIVO!"
echo "-t <TIME> Tiempo de duración de la ejecución. Dado en segundos"
echo " Valores clave: 1[m]=6[s] 1[h]=3600[s]"
echo " Convertir HH:MM:SS a seg en Bash:"
echo ' echo $(($(date -ud "HH:MM:SS" +%s)%86400))'
echo "-f <FILE> Archivo donde se guardará la grabación. El formato será:"
echo " <FILE>-YYYYMMDD-HHMMSS"
echo "-s <URL> Estación a sintonizar, default: http://74.86.83.83:8130 (Opus IMER 94.5)"
exit 0
}
set_mode() {
if [[ $MODE = "silent" ]]
then
OPTIONS="-dumpstream"
elif [[ $MODE = "capture" || -z $MODE ]]
then
OPTIONS="-capture"
else
help
fi
}
# TODO: Aceptar valores HH:MM:SS
set_time() {
if [[ -z $TIME ]]
then
OPTIONS="$OPTIONS"
elif [[ $TIME -gt 0 ]]
then
OPTIONS="$OPTIONS -endpos $TIME"
else
help
fi
}
# Begin Script
PLAYER=mplayer2
STATION=http://74.86.83.83:8130
FILE=Opus
if [[ $1 == "-h" ]]; then
help
else
while getopts m:t:s:f: option
do
case "${option}"
in
m) MODE=${OPTARG} ;;
t) TIME=${OPTARG} ;;
s) STATION=${OPTARG} ;;
f) FILE=${OPTARG} ;;
esac
done
set_mode
set_time
FILE_NAME=$HOME/Desktop/$FILE-`date +%Y%m%d-%H%M%S`
DEFAULT_OPTS="-dumpfile ${FILE_NAME} $STATION"
# echo $PLAYER $OPTIONS $DEFAULT_OPTS #Ver que comando se ejecuta
exec $PLAYER $OPTIONS $DEFAULT_OPTS
exit 0
fi
# End Script
|
Para aquellos que si saben escribir scripts, una disculpa por el uso indiscriminado de sentencias if, prometo cambiarlas un día a switch o algo más bonito.
Gracias de antemano _________________ Algún día habrá una persona mejor que yo, pero esa persona no eres tú ni ese momento es ahora. |
|
Back to top |
|
|
opotonil l33t
Joined: 17 Jun 2005 Posts: 801 Location: 127.0.0.1
|
|
Back to top |
|
|
Arctic Apprentice
Joined: 04 Jul 2011 Posts: 207
|
Posted: Mon Jan 21, 2013 2:26 am Post subject: Re: Ayuda script de bash |
|
|
edgar_uriel84 wrote: | Hola, acabo de hacer un pequeño script de bash para grabar radio por internet (usando mplayer) que pienso agregarlo a cron para que funcione automáticamente. El problema que tengo es que el parámetro -endpos no funciona, cuando lo pruebo en consola directamente sirve bien, pero dentro del script no, lo que se de bash scripting es limitado, supongo que debo manejar un PID y terminarlo manualmente... leeré guías de bash pero si alguien sugiere o sabe una solución dejo el script:
Code: |
#!/bin/bash
help() {
echo "Script que sintoniza un streaming"
echo "radio [OPCIONES]"
echo "Opciones:"
echo "-m <MODE> Opciones: silent - Graba todo el tiempo"
echo " capture (default) - Comienza la grabación al teclear C"
echo " y termina presionando C nuevamente. OJO:"
echo " ¡PRESIONAR NUEVAMENTE REESCRIBIRÁ EL ARCHIVO!"
echo "-t <TIME> Tiempo de duración de la ejecución. Dado en segundos"
echo " Valores clave: 1[m]=6[s] 1[h]=3600[s]"
echo " Convertir HH:MM:SS a seg en Bash:"
echo ' echo $(($(date -ud "HH:MM:SS" +%s)%86400))'
echo "-f <FILE> Archivo donde se guardará la grabación. El formato será:"
echo " <FILE>-YYYYMMDD-HHMMSS"
echo "-s <URL> Estación a sintonizar, default: http://74.86.83.83:8130 (Opus IMER 94.5)"
exit 0
}
set_mode() {
if [[ $MODE = "silent" ]]
then
OPTIONS="-dumpstream"
elif [[ $MODE = "capture" || -z $MODE ]]
then
OPTIONS="-capture"
else
help
fi
}
# TODO: Aceptar valores HH:MM:SS
set_time() {
if [[ -z $TIME ]]
then
OPTIONS="$OPTIONS"
elif [[ $TIME -gt 0 ]]
then
OPTIONS="$OPTIONS -endpos $TIME"
else
help
fi
}
# Begin Script
PLAYER=mplayer2
STATION=http://74.86.83.83:8130
FILE=Opus
if [[ $1 == "-h" ]]; then
help
else
while getopts m:t:s:f: option
do
case "${option}"
in
m) MODE=${OPTARG} ;;
t) TIME=${OPTARG} ;;
s) STATION=${OPTARG} ;;
f) FILE=${OPTARG} ;;
esac
done
set_mode
set_time
FILE_NAME=$HOME/Desktop/$FILE-`date +%Y%m%d-%H%M%S`
DEFAULT_OPTS="-dumpfile ${FILE_NAME} $STATION"
# echo $PLAYER $OPTIONS $DEFAULT_OPTS #Ver que comando se ejecuta
exec $PLAYER $OPTIONS $DEFAULT_OPTS
exit 0
fi
# End Script
|
Para aquellos que si saben escribir scripts, una disculpa por el uso indiscriminado de sentencias if, prometo cambiarlas un día a switch o algo más bonito.
Gracias de antemano |
Siempre hay quien hace las cosas mejor y no por eso hay que estar disculpándose, gracias por compartilo.
Salu2 _________________ ln -s /user/artic /user/arctic |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|