Pagina 1 di 1
Bash, programmare uno script
Inviato: venerdì 7 marzo 2008, 22:02
da monossido
Ciao a tutti...in uno script in bash dovrei avviare mencoder ad una certa ora inserita dall'utente
mencoder ha degli argomenti lunghissimi quindi pensavo di usufruire di uno script di appoggio...però a questo script di appoggio dovrei passare gli argomenti (ora di inizio durata e nome file)
pensavo di usare il comando "at" per programmare lesecuzione di uno script con:
"at -f /path/script.sh hh.mm"
hh.mm sarà la variabile ora...il problema è che dovrei passare a script.sh il nome del file e la durata...se li piazzo là mi da un errore come posso fare?
Re: Bash, programmare uno script
Inviato: sabato 8 marzo 2008, 4:36
da crap0101
at -f /path/script.sh hh.mm
l' hai scritto proprio così?
perchè dovrebbe essere
at -f /path/script.sh hhmm
o
at -f /path/script.sh hh:mm
poi, leggendo nel man, ho visto questo, l' hai già abilitato?
Per entrambi at e batch, i comandi vengono letti dallo standard input o
dal file specificato con l’opzione -f ed eseguiti.
[...]
Il superutente può sempre usare questi comandi. Per gli altri utenti,
l’autorizzazione all’uso è determinata dai file /etc/at.allow e
/etc/at.deny.
Se il file /etc/at.allow esiste, solo gli utenti il cui nome vi è men‐
zionato sono abilitati a usare at.
Se /etc/at.allow non esiste, /etc/at.deny viene controllato, ed ogni
utente il cui nome non vi è menzionato è abilitato a usare at.
Se né l’uno né l’altro esistono, solo il superutente è abilitato a
usare at.
Re: Bash, programmare uno script
Inviato: sabato 8 marzo 2008, 10:21
da monossido
si è uguale che metta hhmm o hh:mm
cioè io dovrei avviare lo script di appoggio così:
"/path/script.sh nomefile 10"
passando come argomenti il nome del file e la durata...questo non funziona se inserisco così com'è quel comando dentro ad at:
at -f /home/monossido/registrazione.sh asd 10 10:30
syntax error. Last token seen: a
Garbled time
non saprei come fare
Re: Bash, programmare uno script
Inviato: sabato 8 marzo 2008, 10:45
da crap0101
monossido ha scritto:
Garbled time
quello sembra indichi i processi ultimati ma non ancora cancellati,
scusa, che opzione è "asd 10" ?
Re: Bash, programmare uno script
Inviato: sabato 8 marzo 2008, 10:54
da monossido
all'interno dello script prendo il primo e il secondo argomento che passo allo script e li uso come nome del file e come durata
almeno questa era la mia intenzione
riporto il comando di mencoder:
Codice: Seleziona tutto
mencoder -quiet -endpos $DURATA:00 -ffourcc "divx" tv:// -tv driver=v4l2:input=1:width=720:height=576:device=/dev/video0:buffersize=256:fps=25:forceaudio:adevice=/dev/dsp -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2500 -vf pp=0x20000 -oac mp3lame -o /home/monossido/$NOME.avi
Quandi al comando che do in pasto ad "at" qualunque esso sia (uno script di appoggio o il comando di mencoder diretto) devo in qualche modo specificare nome file e durata che sono stati inseriti dall'utente
Re: Bash, programmare uno script
Inviato: sabato 8 marzo 2008, 11:04
da crap0101
domanda quasi sicuramente fuori luogo:
hai messo
#! /bin/sh
all' inizio del file col comando di mencoder?
Re: Bash, programmare uno script
Inviato: sabato 8 marzo 2008, 11:20
da monossido
#!/bin/bash è uguale no?
cmq il problema è proprio la sintassi di at...non so se c'è un modo diverso peer usare at oppure se c'è un modo diverso per programmare un'azione...crontab non credo possa essrmi utile o no?
Re: Bash, programmare uno script
Inviato: sabato 8 marzo 2008, 11:30
da crap0101
crontab...forse sì ma non l' ho mai usato, non ti so dire.
invece, ti dicevo di /bis/sh perchè, facendo delle prove mi resstituiva:
marco@marco-desktop:~/Desktop$ at -f /home/marco/Desktop/a 1129
warning: commands will be executed using /bin/sh
Re: Bash, programmare uno script
Inviato: sabato 8 marzo 2008, 11:35
da monossido
sono riuscito in un modo un pò empirico
dove dentro al file di testo c'è il comando che vuoi con tutti gli argomenti che vuoi
sembra funzionare...se qualcuno ha qualche suggerimento per non usare un ulteriore file bene!
Re: Bash, programmare uno script
Inviato: sabato 8 marzo 2008, 11:42
da crap0101
bene, una soluzione interessante! (good)
Re: Bash, programmare uno script
Inviato: sabato 8 marzo 2008, 11:43
da monossido
ecco qua lo script completo
Codice: Seleziona tutto
#!/bin/bash
if zenity --title "Programmare?" --question --text "Vuoi iniziare subito a registrare?"
then
NOME=`zenity --title "Inserisci nome file" --entry --text "Inserisci il nome del file da salvare. Attenzione se esiste già verrà sovrascritto!"`
DURATA=`zenity --title "Inserisci la durata" --entry --text "Inserischi la durata in minuti della registrazione"`
mencoder -quiet -endpos $DURATA:00 -ffourcc "divx" tv:// -tv driver=v4l2:input=1:width=720:height=576:device=/dev/video0:buffersize=256:fps=25:forceaudio:adevice=/dev/dsp -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2500 -vf pp=0x20000 -oac mp3lame -o /home/monossido/$NOME.avi
fi
zenity --title "Avviso" --info --text "Ora puoi programmare una registrazione"
NOME=`zenity --title "Inserisci nome file" --entry --text "Inserisci il nome del file da salvare. Attenzione se esiste già verrà sovrascritto!"`
DURATA=`zenity --title "Inserisci la durata" --entry --text "Inserischi la durata in minuti della registrazione"`
echo "mencoder -quiet -endpos $DURATA:00 -ffourcc "divx" tv:// -tv driver=v4l2:input=1:width=720:height=576:device=/dev/video0:buffersize=256:fps=25:forceaudio:adevice=/dev/dsp -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2500 -vf pp=0x20000 -oac mp3lame -o /home/monossido/$NOME.avi" > comando
ORA=`zenity --title "Inserisci l'ora" --entry --text "Inserisci l'ora di inizio della registrazione nel formato hh:mm"`
cat comando | at $ORA
ho ripetuto la richiesta di nome e durata due vole nel codice per niente...ma mi dava fastidio che chiedesse quelle cos eprima di chiedere di registrare
grazie crap per il supporto

Re: Bash, programmare uno script
Inviato: sabato 8 marzo 2008, 11:53
da crap0101
bravo, utile questo(i) script!
[quote author=monossido link=topic=167872.msg1111044#msg1111044
grazie crap per il supporto

[/quote]
e di che? hai fatto tutto te!