Mi primer script en shell

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
Avatar de Usuario
Knightlain
Forista Nuevo
Forista Nuevo
Mensajes: 18
Registrado: Dom Feb 07, 2010 6:44 pm

Mi primer script en shell

Mensaje por Knightlain » Lun Jul 19, 2010 6:44 pm

Bueno, pues queria mostrarles mi primer script en shell, este script lo hice con el fin de ahorrarme tiempo al quemar discos,

##VERIFICA SI EL DISCO ESTA VACIO, CDEMPTY.SH
##Este codigo no es mio, yo solo lo modifique para agregarle una interfaz grafica en Zenity
CDEmpty()
{
EMPTYCD=$( hal-get-property --udi '/org/freedesktop/Hal/devices/volume_empty_cd_r' --key volume.disc.is_blank )

while [ "$EMPTYCD" != "true" ]
do
eject
zenity --info --text="Inserte un disco virgen y presione aceptar"
eject -t
for (( VARIABLE = 0 ; VARIABLE <= 100; VARIABLE=VARIABLE+10 ))
do

sleep 1 | zenity --text="Verificando disco" --pulsate --percentage=$VARIABLE --progress --auto-close --auto-kill


done
EMPTYCD=$( hal-get-property --udi '/org/freedesktop/Hal/devices/volume_empty_cd_r' --key volume.disc.is_blank )
done
}
##Esta parte si es para grabar el disco
source cdempty.sh
CDEmpty
tamanodisco=$(stat -c %s $1)
string="Grabando tu imagen de ${tamanodisco} bytes"
cdrecord -v $1 | zenity --progress --text="${string}"

Lo que puedo decirles es que me esta gustando esto del shell scripting, siento que me facilita algunas cosas como por ejemplo, ya no tengo que entrar a k3b a grabar discos, lo puedo hacer desde thunar =).

Acpeto comentarios, sugerencias, criticas constructivas tambien, o que mas le puedo agregar, pienso agregarle esto:

Verificar si Cdrecord existe, si no que se descargue.
Que la barra de progreso sea realmente funcional y me diga cuanto lleva, en este necesito ayuda, se que tengo que sacar cuantos bytes van grabados, pero no se como hacer eso aun.
Avatar de Usuario
akodo
Moderador
Moderador
Mensajes: 1457
Registrado: Mié Nov 28, 2007 8:00 am
Ubicación: En la X del explorer (pulse para llamar)

Re: Mi primer script en shell

Mensaje por akodo » Lun Jul 19, 2010 11:21 pm

Para verificar si existe cdrecord, creo que podrías utilizar el comando "whereis". Te lo busca en algunas localizaciones específicas del disco, incluyendo /bin , /usr/bin , /usr/local/bin , y algún sitio más.
Otra opción puede ser ejecutar el comando redirigiendo las salidas hacia /dev/null para no mostrar nada y comprobar el "exit status" del comando.

En cuanto a descargar el programa, no creo que sea adecuado, al menos sin el consentimiento del cliente. Lo mejor sería que, si no existe el programa, se muestra un mensaje al usuario advirtiendolo y se le pregunte si lo quiere descargar. No obstante, para instalar el programa seguramente necesites privilegios, y suele ser indeseable.

Para la barra de progreso... no lo veo posible. Los programas similares que hay para linux tienden a poner una barra indeterminada, o sino están basados en el número de pistas a escribir y no en el número de bytes.
Quizás podrías intentar con hal, la propiedad "volume.disc.capacity", aunque no sé si irá modificándose según vayas grabando.
Te dejo una especificación de hal (a ver si encuentras algo), no sé si será la última:
http://people.freedesktop.org/~dkukawka ... -spec.html
Descargue el gestor de mp3 "Music Manager" -> ([url=http://ctrlalt.iespana.es]mmlf[/url])
Última versión del gestor "Music Manager" -> ([url=http://sourceforge.net/projects/jmusicmanager/]jmmm[/url])
Avatar de Usuario
niky45
Forista Ancestral
Forista Ancestral
Mensajes: 9186
Registrado: Jue Abr 12, 2007 7:00 am
Ubicación: tras la pantalla (...)
Contactar:

Re: Mi primer script en shell

Mensaje por niky45 » Mar Jul 20, 2010 1:06 pm

se que tengo que sacar cuantos bytes van grabados,
esa informacion esta por ahi. lo que no tengo muy claro, es la grabacion del cd en si (me refiero: el disco esta montado, no lo esta, aparece como particion, no aparece... ??)

si esta montado, df te dara el procentaje.

si aparece como particion, filtrando la salida de fdisk -l podras obtenerlo con relativa facilidad (ya que para el sistema, un cd grabado tiene exactamente el tamanio de los datos contenidos).

si no es ni una ni la otra.... se que hay mas info de los HD (df lo saca de algun sitio), pero no se muy bien de donde.

y solo por si acaso: estas seguro de que el propio cdrecord no te da esa info, aunque sea mediante un switch??
_

yo lo que veo mas complicado, es como decirle a zenity que lleva un X % (al menos, con dialog, la cosa realmente no es facil. :? )

:)
#446716
>>"Linux: the operating system with a CLUE... Command Line User Environment".
(seen in a posting in comp.software.testing)

[ DNFD ] - [ F4A ] - [ dotfiles ]
Avatar de Usuario
Knightlain
Forista Nuevo
Forista Nuevo
Mensajes: 18
Registrado: Dom Feb 07, 2010 6:44 pm

Re: Mi primer script en shell

Mensaje por Knightlain » Dom Jul 25, 2010 6:28 pm

yo lo que veo mas complicado, es como decirle a zenity que lleva un X % (al menos, con dialog, la cosa realmente no es facil. :? )
Jeje, precisamente para eso pregunto cuantos bytes van. Sería algo así

disco=$(comando para obtener el espacio)
disco=$(expr(disco '*/' 100))
tamanodisco=$(stat -c %s $1)
total=$(expr(disco / tamano))
zenity --progress --percentage=$total
Avatar de Usuario
niky45
Forista Ancestral
Forista Ancestral
Mensajes: 9186
Registrado: Jue Abr 12, 2007 7:00 am
Ubicación: tras la pantalla (...)
Contactar:

Re: Mi primer script en shell

Mensaje por niky45 » Lun Jul 26, 2010 3:17 pm

:? si. con zenity es mas facil. :cry: (lastima que yo no sea de cositas graficas.... :D )

en serio. esque no tengo cdrecord instalado, pero echale un vistazo al man, porque dudo mucho que cdrecord no te de esa info, aunque sea pasandole algun parametro.

:)
#446716
>>"Linux: the operating system with a CLUE... Command Line User Environment".
(seen in a posting in comp.software.testing)

[ DNFD ] - [ F4A ] - [ dotfiles ]
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje