#1 Le 12/08/2008, à 23:32
- soupaloignon
zenity et xclip : incompatibilité sous hardy ?
Bonjour,
Voici un script qui me permet d'envoyer un fichier sur un ftp, de récupérer le lien complet pour le coller ensuite dans un mail par exemple. La personne n'a plus qu'à cliquer sur le lien pour télécharger le fichier.
#!/bin/bash
#############################################################
# www.soupaloignon.net
# 12/08/2008
# License: GPL
# script permettant d'envoyer un fichier vers un ftp et de récupérer l'adresse compléte dans le presse papier.
# Version : 1.0
#############################################################
login='Votre_Login'
pass='Votre_pass'
host='Votre_adresse_serveur'
port='21'
folder='Dossier_de_destination'
SiteWeb='Adresse_du_site_web'
LienFtp=$SiteWeb/$folder/$@
# On s'assure que les noms de fichiers contenant des espaces fonctionnent
IFS=$'\n'
# Ligne de commande envoyant le fichier sélectionné ($@) vers le ftp
ncftpput -m -u $login -p $pass -V $host $folder $@
# Coller le lien complet dans le presse-papier
echo $LienFtp|xclip
# Opération terminée
zenity --info --title="Envoyer vers le FTP" --text="Le fichier a été correctement envoyé sur le ftp.\n\nLe lien $LienFtp\na été copié dans le presse papier. Pour le coller, appuyer sur la molette centrale de votre souris"
Le problème c'est que si cette portion de code n'est pas dans le script
zenity --info --title="Envoyer vers le FTP" --text="Le fichier a été correctement envoyé sur le ftp.\n\nLe lien $LienFtp\na été copié dans le presse papier. Pour le coller, appuyer sur la molette centrale de votre souris"
ca fonctionne très bien, et le lien complet est bien dans le presse papier, accessible via la molette de la souris.
Mais lorsque la portion de code avec la fenêtre zenity est présente dans le script, cela ne fonctionne plus.
En affinant les recherches pour voir d'où venait le problème et en mettant un 'sleep 10' entre la commande xclip et la fenêtre zenity, je me suis aperçu que le lien était bien dans le presse papier, mais dès l'apparition de la fenêtre, il s'efface.
Et pour info j'avais un script qui se terminait de la même manière : lien récupéré avec xclip + fenetre zenity, et cla fonctionnait très bien, mais j'étais sous Gutsy, d'où le titre de ce post.
Si quelqu'un à une info la dessus... Je suis preneur. Merci d'avance
Complément d'info : Si j'inverse l'ordre de xclip et zenity, ca fonctionne
# Opération terminée
zenity --info --title="Envoyer vers le FTP" --text="Le fichier a été correctement envoyé sur le ftp.\n\nLe lien $LienFtp\na été copié dans le presse papier. Pour le coller, appuyer sur la molette centrale de votre souris"
# Coller le lien complet dans le presse-papier
echo $LienFtp|xclip
Une autre question, par rapport à xclip. Si j'envoie grace au script plusieurs fichiers en même temps sur le ftp, comment faire pour que xclip récupére la liste des adresses de tous les fichiers ?
Pour le moment lorsque j'envoie par exemple 3 fichiers sur le ftp, j'obtiens ça :
http://adresse-de-on-serveur/ftp/fichier1 fichier2 fichier3
Alors que ce qu'il faudrait serait:
http://adresse-de-on-serveur/ftp/fichier1
http://adresse-de-on-serveur/ftp/fichier2
http://adresse-de-on-serveur/ftp/fichier3
Dernière modification par soupaloignon (Le 14/08/2008, à 18:43)
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#2 Le 14/08/2008, à 17:01
- soupaloignon
Re : zenity et xclip : incompatibilité sous hardy ?
un p'tit up
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#3 Le 14/08/2008, à 19:35
- Totor
Re : zenity et xclip : incompatibilité sous hardy ?
Pour ton soucis de fichiers multiples :
LienFtp=""
cible="${SiteWeb}/${folder}/"
for fichier;
do
LienFtp="${LienFtp}${cible}${fichier}\n\r"
done;
Pour ton problème de presse papier, probablement que zenity (que je connais uniquement de nom) doit l'effacer.
L'inversement fonctionnera uniquement dès lors que l'utilisateur aura fermé le dialogue zenity à moins que tu lances zenity en arrière plan (ajoute un & en fin de ligne) et encore... tout dépend de quand zenity efface le presse papier (s'il l'efface).
donc essaie :
# Opération terminée
zenity --info --title="Envoyer vers le FTP" --text="Le fichier a été correctement envoyé sur le ftp.\n\nLe lien $LienFtp\na été copié dans le presse papier. Pour le coller, appuyer sur la molette centrale de votre souris" &
# Coller le lien complet dans le presse-papier
echo $LienFtp|xclip
mais bon, chez moi, ça fonctionne très bien
kubuntu 8.04 (kde3)
xclip 0.08
zenity 2.22.1
-- Lucid Lynx --
Hors ligne
#4 Le 14/08/2008, à 20:19
- soupaloignon
Re : zenity et xclip : incompatibilité sous hardy ?
Merci pour tes réponses.
Par contre je suis loin d'avoir ton niveau ou celui d'alainG en bash, et je ne vois pas où et comment insérer cette portion de script dans le script général.
LienFtp=""
cible="${SiteWeb}/${folder}/"
for fichier;
do
LienFtp="${LienFtp}${cible}${fichier}\n\r"
done;
Pour ton problème de presse papier, probablement que zenity (que je connais uniquement de nom) doit l'effacer.
Je pense que c'est ça, au vu des tests que j'ai fait, et notamment avec le sleep.
Ce qui me fait penser à un disfonctionnement due soit à Hardy, soit à des nouvelles version de xclip et/ou zenity. Je vérifierai lorsque je rentrerai chez moi (ordi encore sous Gutsy) quelles sont les versions utilisées.
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#5 Le 14/08/2008, à 20:28
- Totor
Re : zenity et xclip : incompatibilité sous hardy ?
Tout simplement en lieu et place de
LienFtp=$SiteWeb/$folder/$@
Note : je suis loin d'avoir un niveau "expérimenté" (et donc de celui d'Alain)... je n'ai que 8 mois d'expérience en la matière et la majorité du temps, les solutions que je propose sont des connaissances que j'ai acquis en voulant répondre aux fils.
Dernière modification par Totor (Le 14/08/2008, à 20:29)
-- Lucid Lynx --
Hors ligne
#6 Le 15/08/2008, à 09:00
- soupaloignon
Re : zenity et xclip : incompatibilité sous hardy ?
Merci pour ta réponse.
Chaque lien est complet maintenant, par contre ils sont les uns à la suite des autres, sans retour à la ligne pour chaque lien... Ue idée ?
http://MonFtp.fr/ftp/fichier1\n\rhttp://MonFtp.fr/ftp/fichier2\n\r
Note : je suis loin d'avoir un niveau "expérimenté" (et donc de celui d'Alain)... je n'ai que 8 mois d'expérience en la matière et la majorité du temps, les solutions que je propose sont des connaissances que j'ai acquis en voulant répondre aux fils.
Et bien disons que pour 8 mois d'expérience je trouve que tu taquines le code plutôt pas mal
Dernière modification par soupaloignon (Le 15/08/2008, à 09:01)
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#7 Le 15/08/2008, à 09:55
- Totor
Re : zenity et xclip : incompatibilité sous hardy ?
comme ceci, ça devrait fonctionner :
LienFtp=""
cible="${SiteWeb}/${folder}/"
for fichier;
do
LienFtp="`echo -e "${LienFtp}${cible}${fichier}\n\r"`"
done;
-- Lucid Lynx --
Hors ligne
#8 Le 15/08/2008, à 10:14
- soupaloignon
Re : zenity et xclip : incompatibilité sous hardy ?
comme ceci, ça devrait fonctionner :
LienFtp="" cible="${SiteWeb}/${folder}/" for fichier; do LienFtp="`echo -e "${LienFtp}${cible}${fichier}\n\r"`" done;
Génial, cela fonctionne nickel, merci beaucoup
Avant de le mettre à disposition de ceux que ça intéresse je vais un peu le modifier, afin de proposer le choix entre 2 FTP (perso et professionnel par exemple), et la création d'un fichier log qui contiendra les liens des différents fichiers mis sur les FTP.
Si je coince sur des parties je peux à nouveau te solliciter ?
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#9 Le 15/08/2008, à 14:09
- soupaloignon
Re : zenity et xclip : incompatibilité sous hardy ?
Voila la version finale du script. Tout fonctionne
Par contre il y a peut être des choses à affiner, donc si tu as des idées, n'hésite pas à m'en faire part.
#!/bin/bash
#############################################################
# www.soupaloignon.net
# 15/08/2008
# License: GPL
# script permettant d'envoyer un ou plusieurs fichiers vers 2 ftp (au choix) et de récupérer
# les adresses dans le presse papier et/ou dans un fichier log.
# Version : 1.5
# Dépendances : zenity xclip ncftp
#############################################################
#############################################################
# Variables à modifier par l'utilisateur
#############################################################
# Emplacement de votre fichier log de sauvegardes des liens créés. Mettre votre chemin complet, sans le nom du fichier
cheminFichierLog=/home/NOM-USER/VOTRE-REPERTOIRE
# FTP 1
login='Votre_Login'
pass='Votre_pass'
host='Votre_adresse_serveur'
port='21'
folder='Dossier_de_destination'
SiteWeb='Adresse_du_site_web'
LienFtp=""
cible="${SiteWeb}/${folder}/"
for fichier;
do
LienFtp="`echo -e "${LienFtp}${cible}${fichier}\n\r"`"
done;
# FTP 2
login='Votre_Login'
pass='Votre_pass'
host='Votre_adresse_serveur'
port='21'
folder='Dossier_de_destination'
SiteWeb='Adresse_du_site_web'
LienFtp2=""
cible2="${SiteWeb2}/${folder2}/"
for fichier;
do
LienFtp2="`echo -e "${LienFtp2}${cible2}${fichier}\n\r"`"
done;
#############################################################
# Fin des variables à modifier par l'utilisateur
#############################################################
#############################################################
# On s'assure que les noms de fichiers contenant des espaces fonctionnent
#############################################################
IFS=$'\n'
#############################################################
# Affichage de la liste des opérations possibles
#############################################################
depart=`zenity --list --width=400 --height=310 --title="$titre" --text="$texte" --column "" "Envoyer sur FTP 1" "Envoyer sur FTP 2" `
control
#############################################################
# Envoi sur FTP 1
#############################################################
# Si choix 1 est validé
if [ "$depart" = "Envoyer sur FTP 1" ]; then
# Envoyer les fichiers vers ftp 1
ncftpput -m -u $login -p $pass -V $host $folder $@
# Fenetres d'info indiquant que tout s'est bien passé
zenity --info --title="Envoi sur FTP" --text="Les fichiers ont été correctement envoyés sur $host.\n\nLes liens \n$LienFtp\non été copiés dans le presse papier. Pour les coller, appuyer sur la molette centrale de votre souris. Vous pouvez également retrouver ces liens dans votre fichier log."
# Coller les liens dans le presse-papier +
echo $LienFtp|xclip
# liens écrits dans le fichier log
echo "ENVOI SUR $host DU: $(date +%d-%m-%y\ à\ %H\ heures-%M\ minutes-%S\ secondes)">> $cheminFichierLog/logftp
echo $LienFtp >> $cheminFichierLog/logftp
exit
#############################################################
# Envoi sur FTP 2
#############################################################
# Si choix 2 est validé
elif [ "$depart" = "Envoyer sur FTP 2" ]; then
# Envoyer les fichiers vers ftp 2
ncftpput -m -u $login2 -p $pass2 -V $host2 $folder2 $@
# Fenetres d'info indiquant que tout s'est bien passé
zenity --info --title="Envoi sur FTP" --text="Les fichiers ont été correctement envoyés sur $host2.\n\nLes liens \n$LienFtp2\non été copiés dans le presse papier. Pour les coller, appuyer sur la molette centrale de votre souris. Vous pouvez également retrouver ces liens dans votre fichier log"
# Coller les liens dans le presse-papier
echo $LienFtp2|xclip
#liens écrits dans le fichier log
echo "ENVOI SUR $host2 DU: $(date +%d-%m-%y\ à\ %H\ heures-%M\ minutes-%S\ secondes)">> $cheminFichierLog/logftp
echo $LienFtp >> $cheminFichierLog/logftp
exit
fi
En ce qui me concerne, même si cette portion de code fonctionne, je me demande si il n'y a pas moyen de simplifier
# Coller les liens dans le presse-papier +
echo $LienFtp|xclip
# liens écrits dans le fichier log
echo "ENVOI SUR $host DU: $(date +%d-%m-%y\ à\ %H\ heures-%M\ minutes-%S\ secondes)">> $cheminFichierLog/logftp
echo $LienFtp >> $cheminFichierLog/logftp
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne