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 11/06/2008, à 15:15

xnova

Bash de recherche de fichier sur USB et lancement d'une commande.

Bonjour à toute la communauté !

Je viens vers vous car je suis dans une impasse à propos d'un projet que j'aimerais réalisé.
J'aimerais des conseils pour le réaliser car je suis novice sous Linux et dans l'écriture de bash.

Je voudrais réaliser une sorte de cadre photo numérique mais pour des présentations de type PowerPoint par exemple. Mon problème étant qu'il doit être autonome, lorsque l'on insère une clé usb contenant la présentation mon script lance le programme approprié avec la présentation en boucle.

Un petit peu d'aide pour l'écriture l'écriture du script pour rechercher les fichiers sur la clé et exécuter la commande serait la bienvenue car, n'ayant pas d'expérience en l'écriture de script Linux, uniquement en Bash DOS et en C j'aimerais quelques conseils ou des adresses. J'ai googlisé pas mal et cherché sur pas mal de forums sans succès. Peut être que je ne cherche pas ce qu'il faut non plus...
Si vous pouvez m'en dire plus aussi à propos de Impress si il peut être chargé seul sans oO...

Voici mon algorithme :
Tant que "true"
  Faire
   Rechercher présence d'une clé usb
    Si présente
     Rechercher les fichiers ayant pour extension .ppt
      Si présent
       Copier le fichier dans un répertoire temporaire
       Lancer pptview avec le fichier en argument
      Fin Si
    Fin Si
  Fait

Je me demande aussi comment détecter une nouvelle clé usb pendant le lancement de la présentation, l'arrêter, supprimer l'ancien fichier temporaire, puis lancer la nouvelle présentation et ainsi de suite.

Je fait mes tests sous ubuntu 7.10, la clé est monté automatiquement.

Merci bicou bicou !

Dernière modification par xnova (Le 11/06/2008, à 15:18)

Hors ligne

#2 Le 11/06/2008, à 16:10

Dark-Sham

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

if [ -d /media/disk ]
then
	test -f /media/disk/*.pp* && (mkdir ~/tmp_ppt && cp /media/disk/*.pp* ~/tmp_ppt)
	pptview ~/tmp_ppt/*.pp*
fi

Cela implique que la clé soit montée sur /media/disk/, ce qui n'est pas très "souple" hmm

Je n'ai pas mis la boucle "tant que "true"" car je n'en vois pas l'utilité... Tu serais obligé de lancer un kill pour l'arrêter hmm

Si tu ne comprends pas le code, dis-le moi et je te l'expliquerai en détail wink

Dernière modification par Dark-Sham (Le 11/06/2008, à 18:16)


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#3 Le 11/06/2008, à 16:29

xnova

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Merci beaucoup d'avoir pris le temps c'est très sympa !

Dis moi si je me trompe, j'ai regardé les bash ce matin donc c'est tout frais...

if [ -d /media/disk ]

Test si le répertoire existe si oui ->

test -f /media/disk/*.pp* && (mkdir ~/tmp_ppt cp /media/disk/*.pp* ~/tmp_ppt)
    pptview ~/tmp_ppt/*.pp*

Par contre pour la ligne test le ET logique, pour moi il évalue tout la seconde condition mais fait il l'éxécution des commandes ?

pptview ~/tmp_ppt/*.pp* Lance pptview avec le fichier spécifié.

C'est génial merci.

Justement par rapport au /media/disk c'est le nom par défaut du premier périphérique connecté usb sous ubuntu ? Car c'est vrai que si pour X raisons je veux le porter sur un autre système le /media/disk n'est pas forcément utilisé c'est bien ça?

Pour le "while true" c'était prévu pour détecter en permanence si il ya une clé usb, mais je vais repenser mon algorithme.

Merci.

Dernière modification par xnova (Le 11/06/2008, à 16:33)

Hors ligne

#4 Le 11/06/2008, à 17:50

Dark-Sham

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Ah ok tu veux en faire une tache de fond en quelque sorte ?

Je revois ça et je reposte wink

En ce qui concerne

test -f /media/disk/*.pp* && (mkdir ~/tmp_ppt && cp /media/disk/*.pp* ~/tmp_ppt)
    pptview ~/tmp_ppt/*.pp*

`test -f xxx` ça veut dire "si le fichier xxx existe".

Par contre problème : Si il y a plusieurs fichiers *.pp*, pptview ne saura quoi faire.

Encore une chose : Je vais rajouter la suppression du dossier temporaire.

Et pour finir : Dès que pptview aura quitté, à cause de la boucle, il se relancera juste après ! hmm Je vais tester pour voir mais je pense que ça va faire ça.

Dernière modification par Dark-Sham (Le 11/06/2008, à 18:17)


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#5 Le 11/06/2008, à 18:02

Dark-Sham

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

#!/bin/bash

chemin_usb="/media/disk"
chemin_temp="~/tmp_ppt"

while [ 1 -eq 1 ]
do
	if [ -d $chemin_usb ]
	then
		test -f $chemin_usb/*.pp* && (mkdir $chemin_temp && cp $chemin_usb/*.pp* $chemin_temp)
		pptview $chemin_temp/*.pp*
		rm -f $chemin_temp
	fi
done

Voilà ce que ça donne avec la boucle, mais comme prévu, ça ne s'arrête jamais tant qu'on a pas éjecté la clé ! hmm

Dernière modification par Dark-Sham (Le 11/06/2008, à 18:17)


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#6 Le 11/06/2008, à 20:11

Dark-Sham

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

J'ai trouvé une solution au problème de la boucle, grâce à ça, pptview ne se lance qu'une fois par branchement de clé.

#!/bin/bash

chemin_usb="/media/disk"
chemin_temp="$HOME/tmp_ppt"

test -d $chemin_usb && ppt_vu="0" || ppt_vu="1"

while [ 1 -eq 1 ]
do
	if [ -d $chemin_usb ] && [ "$ppt_vu" = "0" ]
	then
		mkdir $chemin_temp
		test -f $chemin_usb/*.pp* && (cp $chemin_usb/*.pp* $chemin_temp && pptview $chemin_temp/*.pp*)
		rm -r $chemin_temp
		ppt_vu="1"
		
	elif [ ! -d $chemin_usb ]  && [ "$ppt_vu" = "1" ]
	then
		ppt_vu="0"
		
	fi
done

Pose des questions si tu ne comprends pas, sur la syntaxe comme sur la méthode wink

Dernière modification par Dark-Sham (Le 11/06/2008, à 20:14)


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#7 Le 11/06/2008, à 21:55

xnova

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Je te remerci beaucoup, je test ça puis je reviens avec mes questions.
Je vais décortiquer comment tu as fait pour apprendre la syntaxe, mais il fallait pas t'embeter comme ça ! En tout cas merci.

Je vais tester ça.

Hors ligne

#8 Le 12/06/2008, à 14:18

xnova

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Bonjour bonjour !

alors j'ai regardé le code avec attention et effectivement j'ai quelques questions bêtes tongue.

Tout d'abord je doit dire que j'ai un peu de mal avec "test", car je n'arrive pas à voir les priorités des évaluations dans

test -d $chemin_usb && ppt_vu="0" || ppt_vu="1"   et    
test -f $chemin_usb/*.pp* && (cp $chemin_usb/*.pp* $chemin_temp && pptview $chemin_temp/*.pp*)

D'après ce que je vois ça doit être si la première condition est vérifiée alors passer à la seconde et ainsi de suite mais j'aimerais confirmation si ça dérange pas, ensuite j'ai essayé de refaire par mes propres moyens en modifiant un petit peu :

#!/bin/bash

chemin_usb="/media/disk"		#chemin vers cle usb
chemin_temp="$HOME/tmp_ppt"     #chemin temporaire

test -d $chemin_temp && rm -r $chemin_temp 											#nettoyage preliminaire

while true                      													#tache de fond infinie
do
    if [ -d $chemin_usb ]       													#Si USB = present
    then
		if [ pidof pptview ]														#Si pptview start
		then
			test diff $chemin_usb/*.pp* $chemin_temp/*.pp* && (kill $(pidof pptview) &&
															   rm -r $chemin_temp) #Test les deux fichiers, si différent tue pptview
		else 
			test -f $chemin_usb/*.pp* && (	mkdir $chemin_temp &&                   #Test presence ppt sur usb, mkd, copie, lance, efface     
											cp $chemin_usb/*.pp* $chemin_temp && 
											pptview $chemin_temp/*.pp*)
		fi        
    fi
done

Voila mon code plus ou moins cochon, si vous pouviez y jeter un oeil j'ai pas de quoi tester dans l'instant pour me dire si il y a des choses choquantes. Toujours le gros doute malgré que je me soit documenté sur le net pour les "test". Merci beaucoup.

A oui pour la gestion d'erreur je ferais plus tard, mais j'admets que pptview est lancé et $chemin_temp créé et que le ppt tourne en boucle pour éviter l'erreur généré par mkdir.

EDIT : Je viens de tester certains probleme avec unary j'ai résolu mais le kill ne doit pas être bon ...

Dernière modification par xnova (Le 12/06/2008, à 14:55)

Hors ligne

#9 Le 12/06/2008, à 15:19

Dark-Sham

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

test -d $chemin_usb && ppt_vu="0" || ppt_vu="1"

ça correspond à

if [ -d $chemin_usb ]
then
    ppt_vu="0"
else
    ppt_vu="1"
fi

Ces deux écritures sont équivalentes :

if [ -d $chemin_usb ]
if test -d $chemin_usb

En ce qui concerne

test -f $chemin_usb/*.pp* && (cp $chemin_usb/*.pp* $chemin_temp && pptview $chemin_temp/*.pp*)

Ça peut donc s'écrire

if [ -f $chemin_usb/*.pp* ]
then
    cp $chemin_usb/*.pp* $chemin_temp && pptview $chemin_temp/*.pp*
fi

Attention ceci est faux :

while true                                                                          #tache de fond infinie
do
    if [ -d $chemin_usb ]                                                           #Si USB = present
    then
        if [ pidof pptview ]                                                        #Si pptview start
        then
            test diff $chemin_usb/*.pp* $chemin_temp/*.pp* && (kill $(pidof pptview) &&
                                                               rm -r $chemin_temp) #Test les deux fichiers, si différent tue pptview
        else 
            test -f $chemin_usb/*.pp* && (    mkdir $chemin_temp &&                   #Test presence ppt sur usb, mkd, copie, lance, efface     
                                            cp $chemin_usb/*.pp* $chemin_temp && 
                                            pptview $chemin_temp/*.pp*)
        fi        
    fi
done

Si tu veux sauter une ligne au milieu d'une commande, il faut échapper le retour à la ligne :

test -f $chemin_usb/*.pp* && (    mkdir $chemin_temp && \
                                            cp $chemin_usb/*.pp* $chemin_temp && \
                                            pptview $chemin_temp/*.pp*)

Sinon Bash te dira qu'il manque quelque chose après &&.


Donc, 3 choses à retenir :


I)

test xxx && yyy || zzz


veut dire


if [ xxx ]
then
    yyy
else
    zzz
fi

II)

test xxx


équivaut à


[ xxx ]

III)


FAUX :

test xxx &&
yyy ||
zzz

CORRECT :

test xxx && \
yyy || \
zzz

Je suis toujours ouvert à tes questions wink


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#10 Le 12/06/2008, à 15:59

xnova

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Merci !

C'est beaucoup plus clair la fonction test et le saut de ligne je m'en doutais. Je vais refaire mon code avec tes conseils. Je te dit ça tout de suite si ça fonctionne.

Hors ligne

#11 Le 12/06/2008, à 16:04

Dark-Sham

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

De rien big_smile


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#12 Le 12/06/2008, à 16:11

xnova

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Alors avec ce code cela ne me lance plus pptview, je suspecte une erreur de ma part dans les valeur retournée 1 ou 0 dans les test. Je ne suis pas sur non plus de mon  if [ $(pidof pptview) ] pour détecter si pptview est préalablement lancé.

A peut être qu'il me le lance et qu'il me le tue aussitôt dans le 'if' Je vais essayer les echos pour debugger tongue.   

#!/bin/bash

chemin_usb="/media/disk"		#chemin vers cle usb
chemin_temp="$HOME/tmp_ppt"     #chemin temporaire

test -d $chemin_temp && rm -r $chemin_temp 											#nettoyage preliminaire

while true                      													#tache de fond infinie
do
    if [ -d $chemin_usb ]       													#Si USB = present
    then
		if [ $(pidof pptview) ]														#Si pptview start
		then
			test diff $chemin_usb/*.pp* $chemin_temp/*.pp* && (kill $(pidof pptview) && rm -r $chemin_temp) #Test les deux fichiers, si différent tue pptview
		else 
			test -d $chemin_temp && rm -r $chemin_temp
			test -f $chemin_usb/*.pp* && (	mkdir $chemin_temp && cp $chemin_usb/*.pp* $chemin_temp && pptview $chemin_temp/*.pp*) #Test presence ppt sur usb, mkd, copie, lance, efface  
		fi        
    fi
done

Merci encore.

Hors ligne

#13 Le 12/06/2008, à 16:21

xnova

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Heuuuu en fait ça le lance pas de problème (fait une bêtise dans le nom d'accès), mais je me pose une question si je lance un ppt en boucle via ce script il attend que pptview lui redonne la main ?

Si oui c'est embêtant ...      Car du coup je peux pas tester s'il y a un nouveau ppt sur la clé hmm

EDIT : J'ai tester le programme marche \o/  mais c'est bien ce que je pensais le script attend un retour de pptview. Sinon le fonctionnement est nikel, dès que j'appui sur Esc il me scan a nouveau la clé puis lance le nouveau ppt. (bon je peux pas tester la fonction kill par contre tant que j'ai pas la main comme un thread. Il est possible de jouer avec des signaux ?? Merci encore pour cette aide précieuse.

Dernière modification par xnova (Le 12/06/2008, à 16:27)

Hors ligne

#14 Le 12/06/2008, à 16:32

Dark-Sham

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Je crois qu'il y a une solution en cas de multiples fichiers ppt :

for fichier in $chemin_usb/*.pp*
do
    pptview $fichier
done

Je crois que ça lance pptview pour chaque fichier.

Quant au kill, qu'est-ce que tu veux faire avec exactement ? hmm


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#15 Le 12/06/2008, à 16:44

xnova

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

En fait pour cette partie :

if [ $(pidof pptview) ]                                                        #Si pptview start
        then
            test diff $chemin_usb/*.pp* $chemin_temp/*.pp* && (kill $(pidof pptview) && rm -r $chemin_temp) #Test les deux fichiers, si différent tue pptview

Le but c'est que pendant l'exécution de pptview, si je branche une nouvelle clé usb avec un autre fichier ppt, le script tue pptview, nettoie le dossier puis repars dans la boucle pour relancer pptview avec le nouveau fichier.

Seulement j'ai l'impression que le script s'arrête a la ligne

pptview $chemin_temp/*.pp*

Car si je fais Esc (quit pptview) il repars dans le fonctionnement normal et lance le nouveau ppt.

Seulement je n'ai pas envi d'appuyer sur Esc car au final je ne veux pas de clavier pour mon projet.

Merciiiii

Dernière modification par xnova (Le 12/06/2008, à 16:44)

Hors ligne

#16 Le 12/06/2008, à 16:49

Dark-Sham

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Essaye un

killall pptview

à la place de kill `pidof pptview` ?


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#17 Le 12/06/2008, à 18:12

xnova

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Ok ^^ Je vais remplacer ça.

Mais le problème c'est que le script est en attente d'une réponse de pptview, si le processus s'est terminé correctement ou pas ... Car si je met un echo pour debug

 if [ $(pidof pptview) ]                                                        #Si pptview start
        then
            [b]echo "Pptview actif"[/b]
            test diff $chemin_usb/*.pp* $chemin_temp/*.pp* && (kill $(pidof pptview) && rm -r $chemin_temp) #Test les deux fichiers, si différent tue pptview
        else 
            [b]echo "Pptview inactif"[/b]
            test -d $chemin_temp && rm -r $chemin_temp
            test -f $chemin_usb/*.pp* && (    mkdir $chemin_temp && cp $chemin_usb/*.pp* $chemin_temp && pptview $chemin_temp/*.pp*) #Test presence ppt sur usb, mkd, copie, lance, efface  
        fi

Dans le shell je vois bien "Pptview inactif" dès que j'ai mis la clé usb et ensuite je vois les infos de pptview/wine seulement quand je débranche la clé et insère une nouvelle je ne vois pas "Pptview actif" que si je quitte PptView par Echap.

Merci;

Hors ligne

#18 Le 12/06/2008, à 18:28

Dark-Sham

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Bah reprends ce code :

#!/bin/bash

chemin_usb="/media/disk" # Chemin de la clé USB
chemin_temp="$HOME/tmp_ppt" # Chemin temporaire

test -d $chemin_usb && ppt_vu="0" || ppt_vu="1" # Si la clé est déjà branchée, on considère que le(s) ppt(s) n'ont pas encore été vus et inversement.

while [ 1 -eq 1 ] # Boucle infinie
do
	if [ -d $chemin_usb ] && [ "$ppt_vu" = "0" ] # Si la clé est montée et qu'on a pas encore vu le(s) ppt(s)
	then
		mkdir $chemin_temp # On créé le chemin temporaire
		test -f $chemin_usb/*.pp* && (cp $chemin_usb/*.pp* $chemin_temp && pptview $chemin_temp/*.pp*) # On teste s'il y a des fichiers *.pp* dans la clé USB, si oui on les copie dans le dossier temp. et on les lit
		rm -r $chemin_temp # On supprime le dossier temp.
		ppt_vu="1" # On signale que le(s) ppt(s) a(ont) été déjà vu(s)
		
	elif [ ! -d $chemin_usb ]  && [ "$ppt_vu" = "1" ] # Sinon, dès que la clé est débranchée et qu'on a déjà vu le(s) ppt(s)
	then
		ppt_vu="0" # On signale qu'on ne le()s a pas encore vu(s)
		
	fi
done

Et il suffit de rajouter dans la partie qui lit le ppt la commande pour tuer pptview.


Ce qui donne :

#!/bin/bash

chemin_usb="/media/disk" # Chemin de la clé USB
chemin_temp="$HOME/tmp_ppt" # Chemin temporaire

test -d $chemin_usb && ppt_vu="0" || ppt_vu="1" # Si la clé est déjà branchée, on considère que le(s) ppt(s) n'ont pas encore été vus et inversement.

while [ 1 -eq 1 ] # Boucle infinie
do
	if [ -d $chemin_usb ] && [ "$ppt_vu" = "0" ] # Si la clé est montée et qu'on a pas encore vu le(s) ppt(s)
	then
		killall pptview # On tue tous les pptview déjà lancés
		mkdir $chemin_temp # On créé le chemin temporaire
		test -f $chemin_usb/*.pp* && (cp $chemin_usb/*.pp* $chemin_temp && pptview $chemin_temp/*.pp*) # On teste s'il y a des fichiers *.pp* dans la clé USB, si oui on les copie dans le dossier temp. et on les lit
		rm -r $chemin_temp # On supprime le dossier temp.
		ppt_vu="1" # On signale que le(s) ppt(s) a(ont) été déjà vu(s)
		
	elif [ ! -d $chemin_usb ]  && [ "$ppt_vu" = "1" ] # Sinon, dès que la clé est débranchée et qu'on a déjà vu le(s) ppt(s)
	then
		ppt_vu="0" # On signale qu'on ne le()s a pas encore vu(s)
		
	fi
done

smile

Si tu veux, j'ai hébergé le script ici : http://rsham.free.fr/divers/usb_ppt.sh
pour éviter les problèmes de mise en forme wink


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#19 Le 12/06/2008, à 19:43

xnova

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Merci, mais ça n'a pas changé le problème reste le même ^^.
Je vais goolisé pour savoir comment recupérer la main avant la fin du processus.
big_smile

Hors ligne

#20 Le 12/06/2008, à 20:01

Dark-Sham

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Pour ça, tu peux tenter de lancer le processus en tâche de fond :

(commande1)& ; commande2

Le & fait passer comande 1 en tâche de fond et passe à la commande 2.


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#21 Le 12/06/2008, à 21:15

xnova

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

De retour !

J'ai un problème avec l'argument pour pptview il me redemande de choisir le fichier.
Je verrais ca en détails tout à l'heure.

Hors ligne

#22 Le 12/06/2008, à 21:21

Dark-Sham

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Quels sont la commande et le message d'erreur ?


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#23 Le 12/06/2008, à 23:19

xnova

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Juste rajouté  ...(pptview $chemin_temp/*.pp*)&)

pptview se lance puis il me demande le fichier car il ne trouve pas le dossier "ppt_temp" Je vais vérifier le code pour les boucles.

Merci.

Hors ligne

#24 Le 13/06/2008, à 05:54

Dark-Sham

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Ok, si tu ne trouves pas, je suis là wink


Script de sauvegarde/restauration APT

Ubuntu 8.04 "Hardy Heron"
CPU : AMD Athlon XP 2800+ ; GPU : ATI Radeon 9250/9200 Series ; RAM : 2 Gigots + 512 Mégots ; Carte mère : Asus A7N8X-E Deluxe

Hors ligne

#25 Le 13/06/2008, à 10:24

xnova

Re : Bash de recherche de fichier sur USB et lancement d'une commande.

Bon voilà je pense que j'ai réussi à faire ce que je voulais sans trop de problème de logique. Je suis désolé j'ai repris mon code j'ai pourtant essayé avec les test mais certainement que ma syntaxe était pas tip-top avec les parenthèses, donc voilà ce qui fonctionne pour moi :

#!/bin/bash

chemin_usb="/media/TS2GJFV20/EEEPC" # Chemin de la cl� USB
chemin_temp="$HOME/tmp_ppt" # Chemin temporaire

test -d $chemin_temp && rm -r $chemin_temp 

while [ 1 -eq 1 ] # Boucle infinie
do
    if [ -d $chemin_usb ]  #Si cle detectee
    then
		#sleep 1
		#echo "cle detecte"
		if [ ! "$(pidof pptview)" ]  #Si pptview n'est pas detecte
		then
			#echo "pptview inactif"
			test -f $chemin_usb/*.pp* && (mkdir $chemin_temp && cp $chemin_usb/*.pp* $chemin_temp && (pptview $chemin_temp/*.pp*)&) 
			echo "pptview lance"
		else
			#sleep 1
			#echo "pptview actif"
			if [ -d $chemin_usb ]
			then
				cmp $chemin_usb/*.pp* $chemin_temp/*.pp* &> /dev/null
				if [ $? -ne 0 ]
				then
					killall pptview
					test -d $chemin_temp && rm -r $chemin_temp
				fi
			fi
		fi
    fi
done

Je m'excuse d'avance pour les if dans tout les sens, je ferais mieux tout à l'heure pour le moment c'est juste pour tester. big_smile

Hors ligne