#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"
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
Si tu ne comprends pas le code, dis-le moi et je te l'expliquerai en détail
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
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 ! 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é !
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
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 .
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
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
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 .
#!/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é
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 ?
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
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
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.
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à
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.
Hors ligne