Article View: es.comp.os.linux.programacion
Article #6801Re: Script para extraer fotos de la BenQ 1500
From: Reinoso G.
Date: Sat, 17 May 2003 21:53
Date: Sat, 17 May 2003 21:53
155 lines
6429 bytes
6429 bytes
Hola
si alguien ha tratado de ejecutar el script que envi� antes habr� visto
que no funciona, eso es porque pegu� una versi�n a medias y no la
funcional. Env�o la versi�n correcta, terminada y teniendo en cuenta la
aportaci�n de Hue-Bond.
Aunque para ser francos la seguridad de este script aun usando mktemp
brilla por su ausencia. Para empezar se presta a una condici�n de carrera
m�s o menos f�cilmente explotable. Para evitar esto ser�a necesario
realizar todas las operaciones en el directorio de root, y no en tmp.
Bueno, perdonad por enviarlo dos veces.
Saludos.
-------------------------------------
#!/bin/bash
# Script para extraer todas las fotos de la c�mara BenQ DC-1500 a un
# directorio. Ver las opciones de configuraci�n mas abajo.
# Requiere el paquete cdrecord
# Funcionanamiento:
# * comprobar si somos root: necesitamos serlo; si no se sale
# * hacer un cdrecord --scanbus a ver si aparece la c�mara
# - si no apareciere mirar en el dir de los m�dulos por si hubiera
# que cargarlos: se cargan y se repite
# - si a�n as� no aparece avisar al usuario (puede que est� apagada)
# * extraer con readcd todo a partir del sector 25 a un fichero en /tmp
# * montar ese fichero (crear directorio en /tmp como punto de montaje)
# * crear en el dir de las fotos puesto como opci�n un subdir nuevas-fecha
# * copiar el subdirectorio de las fotos en el dir nuevo creado
# * borrar las cosas de tmp
# Llamada:
# sacafotos [volcar]
# El par�metro volcar sustituye a la opci�n "volcar" explicada m�s abajo.
# Esto podr�a ponerse para que se ejecute autom�ticamente al detectar el nuevo
# dispositivo con el paquete hotplug o algo as�.
# TODO: Se le podr�a a�adir que detecte si el kernel del usuario soporta FAT y
# de no ser as� cargar el m�dulo correspondiente.
# Tambien idear una soluci�n elegante al problema de hallar dos fotos con el
# mismo nombre ya en el directorio.
# Y ser�a bueno un control de errores.
# Script By Reinoso G. 17-5-03
################ O P C I O N E S #######################################
# Usuario de las fotos (para fijar el directorio home y los permisos):
# usuario=reinoso
usuario=reinoso.users
# usuario=root
# Directorio raiz de las fotos:
dirfotos=/home/reinoso/fotos
# Directorio donde volcar las fotos nuevas como una cadena de formato de
# 'date' por ejemplo (subdirectorio de dirfotos):
volcar=+%d.%m.%y
# volcar=+Nuevas-%d.%m.%y
# volcar=+%d de %B de %Y
# M�dulo de interface USB:
# puede ser usb-ohci, usb-uhci o uhci u otro, si lo tienes compilado en el
# kernel comenta esta opci�n:
ohci=usb-ohci
# ohci=usb-uhci
# ohci=uhci
################ C � D I G O ###########################################
if [ ! $USER = root ]
then
echo Para poder funcionar este script debe ejecutarlo el superusuario.
exit 1
fi
echo Buscando la c�mara BenQ DC1500...
dev=`cdrecord -s --scanbus | grep 1500 | cut -f2`
if [ -z $dev ] # no detectada
then
rev=`uname -r` # puede ser cosa del m�dulo de mass-storage
if [ -f "/lib/modules/$rev/kernel/drivers/usb/storage/usb-storage.o" ] &&
(! lsmod | grep storage > /dev/null)
then
echo Cargo el m�dulo de almacenamiento masivo
modprobe -k usb-storage
sleep 1
dev=`cdrecord -s --scanbus | grep 1500 | cut -f2`
fi
fi
if [ -z $dev ] && ! [ -z $ohci ] # no detectada
then # a ver si es del ohci
if [ -f "/lib/modules/$rev/kernel/drivers/usb/$ohci.o" ] &&
(! lsmod | grep $ohci > /dev/null)
then
echo Cargo el m�dulo de interfaz USB
modprobe -k $ohci
sleep 1
dev=`cdrecord -s --scanbus | grep 1500 | cut -f2`
fi
fi
if [ -z $dev ]
then
echo
echo No puedo detectar la c�mara. Comprueba que est� conectada al PC y
echo encendida en modo usb-storage. Puedes hacer un cdrecord --scanbus
echo para comprobar si aparece.
exit 2
fi
echo �C�mara encontrada en $dev!
echo
echo Extrayendo el contenido...
echo ----------------------------------
tmp=`mktemp -t XXXXXXXXX`
readcd -s -sectors=25 -dev=1,0,0 -f="$tmp"
echo ----------------------------------
echo
tmpd=`mktemp -d -t XXXXXXX`
mount "$tmp" "$tmpd" -o loop,umask=111
# Las fotos est�n ahora en $tmpd/dcim/100_benq/
volcar=$dirfotos/`date "$volcar"`
if [ $1 ]; then volcar=$dirfotos/$1; fi
echo Moviendo las fotos al directorio $volcar...
mkdir $volcar
mv -f $tmpd/dcim/100_benq/* $volcar
chown -R $usuario $volcar
umount $tmpd
rm -f $tmp
rm -rf $tmpd
echo
echo Hecho.
--------------------------------------------
--
�������������������������������������������������������������������������
�� Reinoso G. EA4BAO r einoso.bao@wanadoo.e s ��
�� http://perso.wanadoo.es/reinoso.bao ��
�������������������������������������������������������������������������
Technical Details
Message-ID:
<slrnbcdbq5.jv.reinoso@EA4BAO.PLLANO.ESP.EU>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!newshub.sdsu.edu!cox.net!news-xfer.cox.net!mainake.escomposlinux.org!reboot.escomposlinux.org!news-7.escomposlinux.org!newsReferences:
<slrnbccdpb.qt.reinoso@EA4BAO.PLLANO.ESP.EU>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,97ab8c1645726889 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2003-05-17 16:31:02 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!newshub.sdsu.edu!cox.net!news-xfer.cox.net!mainake.escomposlinux.org!reboot.escomposlinux.org!news-7.escomposlinux.org!news From: "Reinoso G." <reinoso@probando.com> Newsgroups: es.comp.os.linux.programacion Subject: Re: Script para extraer fotos de la BenQ 1500 Date: Sat, 17 May 2003 23:53:09 +0200 Organization: ecolnet Lines: 155 Message-ID: <slrnbcdbq5.jv.reinoso@EA4BAO.PLLANO.ESP.EU> References: <slrnbccdpb.qt.reinoso@EA4BAO.PLLANO.ESP.EU> Reply-To: rei noso.bao@wanadoo.e s NNTP-Posting-Host: 62-36-71-106.dialup.uni2.es Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: tro.champinet.es 1053214257 18148 62.36.71.106 (17 May 2003 23:30:57 GMT) X-Complaints-To: reboot@escomposlinux.org NNTP-Posting-Date: Sat, 17 May 2003 23:30:57 +0000 (UTC) User-Agent: slrn/0.9.7.4 (Linux)