Rotina iniciando na hora que o usuário desejar

Iniciado por JarbasAugusto, 02 de Outubro de 2007, 15:49

tópico anterior - próximo tópico

JarbasAugusto

Seguinte...

Comecei do zero mesmo, não manjava nada de shell script, entaão montei um script que resumidamente faz o que se segue:

Pimeiro, o usuario digita a Hora (0 a 23) e depois o Minuto (00 ou 30) para inicio da captura de video atraves de um programa mp4live.
Falta ainda implementar a duração da gravação do sistema, mas isso eh outro assunto.

Gostaria que me dissessem se o script está ok, se há uma outra forma de se fazer mais simples ou não. Li sobre crontab.. mas pelo oq entendi  ela executa o script sempre nos momentos que vc programa nela. Desta forma não sei como utilizar ela de forma que o usuário sempre q desejar iniciar na hora q ele quiser o programa, por isso fiz como se segue.

Ou seja, eu somo a hora e minuto que o usuário quer o inicio da gravação, então a rotina fica pegando a hora e minuto atuais, somando-as e comparando com a soma informada pelo usuário. caso iguais começa a gravação.

#!/bin/bash
inicio() {
echo "SIVIRES" #Nome do projeto
echo "Iniciar gravação em:"
read -p "Hora(00 a 23): " hora
if [ $hora -gt 23 ]; #Nesse If amarro para o usuário não digitar um valor de hora maior que 23 horas
then
clear
echo "Parametro Incorreto"
inicio
else
echo "Minutos: "
echo  "[1] 00"
echo  "[2] 30"
echo -n "Digite a opção: "
read opcao
case $opcao in
1) min="0" ;;
2) min="30" ;;
*) clear ; echo "Parametros Incorretos" ; inicio ;;
esac
fi
}

gravacao() { #rotina "principal" aqui que será executada a gravação no mp4live
loop="enabled"
while [ $loop = "enabled" ]; do
echo "SIVIRES"
data="`date +%Y_%m_%d_%H_%M`"
echo "Data e Hora Atual:$data"
sed -i "s|^recordFile=.*|"recordFile=/usr/local/movies/$data".mp4|" /home/jarbas/.mp4live_d/Streams/Teste
echo "Gravando..."
sudo mp4live --automatic
killall mp4live   

done
}

dat() { #funçao que soma hora e minuto atual
Hatual="`date +%H`"
Matual="`date +%M`"
Satual=$(($Hatual+$Matual))
}

main() { # Função que testa se a hora e minuto que o usuário quer q a gravação comece é igual a hora e minuto atual
soma=$(($hora+$min))
dat
#echo "Soma INICIO: $soma"
#echo "Soma ATUAL: $Satual"

if [ $soma -eq $Satual ];
then
gravacao
else
main
fi
}
inicio
main



JarbasAugusto

to com um problema..
depois de um tempo.. o script executado da a seguinte mensagem.. alguem pode me ajudar??

jarbas@jarbas-laptop:~$ ./teste2.sh
SIVIRES
Iniciar gravação em:
Hora(00 a 23): 17
Minutos:
[1] 00
[2] 30
Digite a opção: 1
Durante quantas horas o sistema ficará ativo: 1
Aguardando o início da gravação... Início 17:0
./teste2.sh: line 46: +: erro de sintaxe: operando esperado (error token is "+")

Kamei Hyoga

Eu não manjo muito de shell, mas dá uma olhada nessa linha 46 e veja se está tudo escrito direitinho. Parece que o "+" não está sendo reconhecido e etc.

Espero ter ajudado.