Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/05/2016, à 16:42

loukoum50

Rendre executable un script sur une carte mémoire d'appareil photo

Bonjour,
J'ai fait un petit script très imparfait pour copier mes photos dans un dossier de mon disque dur en les renommant par la date au format YYYYMMDD-hhmmss, qui fonctionne malgré un message d'erreur. Le problème est lorsque je le copie sur la carte mémoire de mon appareil photo, il ne peut pas s’exécuter car je n'arrive pas à le rendre exécutable. Il semblerait que les appareils photos et carte mémoire soient montés automatiquement sans droit d'execution. Comment puis-je configurer xUbuntu pour qu'il les monte avec droit d'execution ?

Merci d'avance pour vos réponses.


Je mets à tout hasard le script en question :
Il vérifie en plus que le fichier n'existe pas déjà dans deux répertoires et indice pour éviter les doublons.

#!/bin/bash
DestFinale="/home/etienne/Images/2016/"
DestTemporaire="/home/etienne/Images/2016/Temporaires/"
#TRAITEMENT DES IMAGES JPG

for fichier in *.JPG; do
	indice=""
	date=`identify -format "%[EXIF:DateTimeOriginal]" "$fichier" | awk -F " " '{print $1}' | awk -F ":" '{print $1""$2""$3}'`
	date=$date"-"`identify -format "%[EXIF:DateTimeOriginal]" "$fichier" | awk -F " " '{print $2}' | awk -F ":" '{print $1""$2""$3}'`

	while  [ [ -e "$DestFinale$date$indice.JPG" ] -o [ -e "$DestTemporaire$date$indice.JPG" ]]	
	do
        	indice=$(($indice+1))	
	done
	mv $fichier $DestTemporaire$date$indice.JPG
	#cp -p $fichier $DestTemporaire$date$indice.JPG
	echo "le fichier $DestTemporaire$date$indice.JPG vient d'etre copié"
	
done

Modération : merci à l'avenir d'utiliser les balises code (explications ici).

Dernière modification par cqfd93 (Le 16/05/2016, à 17:25)

Hors ligne

#2 Le 16/05/2016, à 16:50

zététix

Re : Rendre executable un script sur une carte mémoire d'appareil photo

Salut,

en fait ta carte mémoire est sans doute en Fat32 et ne supporte donc pas les permissions. A moins d'être root tu ne pourras en effet pas éxécuter tes scripts. Surtout ne formate pas ta carte en ext4 pour autant, elle ne serait plus lisible par ton appareil ! Donc je pense que soit tu lances tes scripts en root, soit tu les copies sur une partition ext pour pouvoir les rendre éxécutables.
Mais quel est ton message d'erreur au juste ? Tu ne peux pas lancer ton script depuis un autre endroit que la carte mémoire ? Ce serait plus simple je pense !


Aidez-moi à faire connaître mon projet : RaidGHost, un hébergeur (presque :P) gratuit et sans publicité !

Hors ligne

#3 Le 16/05/2016, à 19:01

loukoum50

Re : Rendre executable un script sur une carte mémoire d'appareil photo

Merci pour ta réponse,
La carte mémoire est effectivement en fat et il n'y a pas vraiment de message d'erreur quand je coche la case "autoriser ce fichier a être exécuté comme un programme" la case se re-décoche toute seule.
Quand je double clique dessus pour l'éxecuter j'ai ce message d'erreur.
"L'exécution du processus fils « /media/etienne/9016-4EF8/DCIM/100OLYMP/RenommerPhotoCopieV1 » a échoué (Permission non accordée)"

Donc effectivement la bonne solution est sans doute de l’exécuter ailleurs il faut donc en début de script que j'aille dans le repertoire DCIM de ma carte par la fonction cd "chemin du repertoire"
Par contre ayant 2 appareils photos il faudrait que je trouve le moyen d'interroger l'utilisateur (et d'ouvrir une fenêtre batch) pour choisir entre l'appareil 1 et 2 et donc me déplacer vers le dossier1 ou dossier 2 avec la commande batch. J'avoue que si tu as une petite idée je suis preneur car je suis novice en batch et je galère pas mal !

Merci

Hors ligne

#4 Le 16/05/2016, à 19:34

erresse

Re : Rendre executable un script sur une carte mémoire d'appareil photo

Bonjour,
As-tu d'abord essayé d'exécuter ton script, non pas en double cliquant dessus, mais en l'appelant avec la commande "bash" :

bash mon_script

En effet, les permissions Linux ne sont pas gérées sur FAT ou NTFS, donc il n'est pas possible de cocher la case "exécuter...".
Si le lancement avec la commande "bash" fonctionne, pour ne pas avoir à ouvrir un terminal juste pour ce lancement, tu peux créer un lanceur à mettre sur ton bureau.


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#5 Le 16/05/2016, à 19:51

zététix

Re : Rendre executable un script sur une carte mémoire d'appareil photo

En fait ce n'est pas vraiment une pratique courante d'interroger l'utilisateur pendant l'éxécution d'un script. Ce qu'on fait le plus souvent c'est qu'on appelle le script avec des paramètres. Par exemple dans ton cas, avec le numéro de l'appareil photo.

Tu auras quelque chose comme :

./script numéro_appareil

A l'intérieur de ton script tu sauras quel appareil traiter en testant la variable $1 (premier paramètre passé au script) :

if [ $1 == 1 ]
then
...
else
...
fi

Tu peux néanmoins demander à l'utilisateur de taper quelque chose au moyen de la commande read.

Ensuite, plutôt que de faire des cd, tu peux utiliser des chemins absolus. C'est-à-dire écrire à chaque fois /media/etienne/...
C'est plus long mais ça a le mérite de fonctionner tout le temps !


Aidez-moi à faire connaître mon projet : RaidGHost, un hébergeur (presque :P) gratuit et sans publicité !

Hors ligne

#6 Le 16/05/2016, à 21:49

loukoum50

Re : Rendre executable un script sur une carte mémoire d'appareil photo

Merci pour vos deux réponses :

celle d'erese me convient très bien sauf que je n'arrive pas à garder le terminal ouvert à la fin du script.

Si je comprend bien ta remarque zététix il faudrait que je modifie le code par :

for fichier in /chemindemonrepertoire/*.JPG; do

Bonne soirée

Hors ligne

#7 Le 17/05/2016, à 10:51

erresse

Re : Rendre executable un script sur une carte mémoire d'appareil photo

Pour que le terminal reste ouvert à la fin du script, il suffit d'ajouter une dernière ligne :

read -p "Appuyer sur Entrée"

Ainsi, le script attendra que tu appuies sur Entrée pour continuer son exécution, c'est à dire se fermer puisqu'il n'y a plus rien à faire...


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne