🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #6801

Re: Script para extraer fotos de la BenQ 1500

#6801
From: Reinoso G.
Date: Sat, 17 May 2003 21:53
155 lines
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!news
References: <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)