#!/bin/bash # Author : Coffee # Modifier : Coffee # Creation Date : 01/03/2005 # Last Modification Date : 02/06/2005 # Release : 0.3 ################################## Debut de la zone editable ############################################################## #Initialisation des variables #Si vous voulez tester 1 fois avant pour verifier les données entrées, passez sauvegarde à "1", ainsi un fichier de configuration sera crée avec les données rentrées sauvegarde="0" #Si la variable est vide "" alors elle vous sera demandé, sinon le script prendra en compte ces valeurs #domaine de connection nom_de_domaine="" #nom d'utilisateur login="" ################################### #Je conseille fortement de ne pas mettre une valeur ici car la valeur restera en clair password="" #Si quelqu'un sait comment crypter des mots de passe en bash de façon secure, qu'il me contacte, ça m'interresse. ################################### #repertoire par defaut de destination: destination="" # #Serveur passif (Si passive="1" alors la connection sera en mode passif, sinon elle sera active) passive="0" # #Indique le type de notification que l'on désire # "0" --> Dans la zone de notification # autre --> Dans une fenetre notification="1" # #fournir à lftp des arguments que je n'ai pas encore implémenté: lftp_args="" ################################## Fin de la zone editable ################################################################ # Ce script a été réalisé par un français pour la communauté Ubuntu # Si vous modifiez le script, veuillez prévenir son auteur en fournissant le script modifier, la modification sera peut etre incluse dans une prochaine version avec votre nom dans les modifier (et votre adresse si vous le demandez) # Si vous trouvez des bugs veuillez prévenir son auteur en fournissant les bugs rencontrés # Si vous utilisez ce script dans un autre but que celui pour lequel il est désigné ou si vous parlez de mon script, merci de me faire un petit feedback #But du Script: # Le but de ce script est de permettre l'envoi de fichier depuis nautilus vers un ftp #Besoin du script # Zenity pour le graphisme # lftp pour l'envoie # bash, awk, sed pour le script #Malus (-): #Marche-t-il bien? #Bonus (+) #gestion des noms de fichiers avec espace #il marche ayé #utilisation d'un fichier de configuration #Possède un installeur #Affichage un log de ce qui est fait à la fin du script en cas d'erreur #Mulilingue #ChangeLog: # 0.2d --> 0.3 # - enfin des messages d'erreur tout à la fin (log de lftp) # - Mise en place du Multilingue # 0.2 --> 0.2d # - Correction de faute de frappe # - L'upload refonctionne :D # - La notification d'erreur semble fonctionnée # - Disparition de l'installeur (il reviendra plus tard, promis) #0.1d --> 0.2 # - gestion des repertoire (Merci moi qui suis trop con et qui me complique trop la vie parfois) # - correction bug actif/passif (Merci Khalys) # - correction de l'installeur (Merci nomade) #O.1c --> 0.1d # - ajout de remerciement dans le script #0.1a --> 0.1c # - ajout de l'installeur et d'un README # - création d'un fichier de configuration # - la notification de copie n'est plus présente car elle pouvait disparaitre en cliquant sur l'icone # - le message informant si la copie s'est bien déroulé apparait en zone de notification #0.1 --> 0.1a # - Support passif/actif (Merci Titus) # - Modification du texte de la fenêtre de demande de mot de passe #Remerciement #Je voulais juste remercier Titus et ttoine sur ubuntu-fr.org pour avoir testé ce script et m'avoir donné leurs impressions dessus #Je remercie aussi les Christophe Colomb pour avoir découvert l'amérique sans qui on aurait pas de bons films français comme Pamela Rose #Je remercie encore à Dagg qui m'a permis de voir les variables d'environnement (mon nautilus-script ne marche pas sous hoary :'() #Je remercie #ubuntu-fr qui m'a forcé à replonger dans ce script et particulièrement NaWer #Choix de la langue: LANG4USER=FR LANG_MINIMA=`echo $LANG | awk 'BEGIN {FS = "_" } { printf "%s", $1 }' | tr [a-z] [A-Z]` #Peut etre que FR pour français ou EN pour anglais (declaré dans la partie texte de langue) #Verification de LANG4USER case $LANG_MINIMA in FR) LANG4USER=0 ;; EN) LANG4USER=1 ;; *) LANG4USER=1 ;; esac ######### texte de langue ###### ### En Francais FILE_SELECT_ERROR_TITLE_[0]="erreur" FILE_SELECT_ERROR_TEXT_[0]="Script d'envoie de fichier sur ftp. Veuillez selectionner des fichiers" DOMAIN_NAME_SELECT_TITLE_[0]="Nom de domaine" DOMAIN_NAME_SELECT_TEXT_[0]="Veuillez fournir le nom de domaine sur lequel on doit se connecter" USER_NAME_ENTER_TITLE_[0]="Login" USER_NAME_ENTER_TEXT_[0]="Veuillez fournir le nom d'utilisateur pour se connecter" PASSWORD_ENTER_TITLE_[0]="Mot de passe" PASSWORD_ENTER_TEXT_[0]="Veuillez fournir le mot de passe de" PASSWORD_ENTER_TEXT2_[0]="sur" DIRECTORY_ENTER_TITLE_[0]="Repertoire" DIRECTORY_ENTER_TEXT_[0]="Veuillez fournir le repertoire de destination" PASSIVE_QUERY_TEXT_[0]="Voulez-vous être en mode passif?" LFTP_ERROR_TITLE_[0]="Problème lors de l envoi:" ### En Angais FILE_SELECT_ERROR_TITLE_[1]="error " FILE_SELECT_ERROR_TEXT_[1]="This script send files to ftp. Please select files" DOMAIN_NAME_SELECT_TITLE_[1]="Domain Name" DOMAIN_NAME_SELECT_TEXT_[1]="Please give the domain name to connect" USER_NAME_ENTER_TITLE_[1]="Login" USER_NAME_ENTER_TEXT_[1]="Please give the username to connect" PASSWORD_ENTER_TITLE_[1]="Password" PASSWORD_ENTER_TEXT_[1]="Please give the password for" PASSWORD_ENTER_TEXT2_[1]="on" DIRECTORY_ENTER_TITLE_[1]="Directory" DIRECTORY_ENTER_TEXT_[1]="Please give the destination directory" PASSIVE_QUERY_TEXT_[1]="Would you like to be in passive mode?" LFTP_ERROR_TITLE_[1]="Error while sending:" ################################# if [ $# -eq 0 ]; then zenity --error --title="${FILE_SELECT_ERROR_TITLE_[${LANG4USER}]}" --text="${FILE_SELECT_ERROR_TEXT_[${LANG4USER}]}" exit 1 fi nom_fichier="${0}.cfg" source "$nom_fichier" #Trouvé sur g-scripts pour gérer les espaces dans les fichiers selection=$(echo -e "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | awk 'BEGIN {FS = "\n" } { printf "\"%s\"\n", $1 }' | sed -e s#\"\"##) selection=`echo "$selection" | sed 's/ /\\ /' | sed 's/\\"\\ /\\" /'` #il faut modifier selection pour qu'il ne contienne juste le dernier terme selection=`echo -e "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | awk 'BEGIN {FS="/" } {printf "\""$NF"\" " }'` while [ "${nom_de_domaine}" == "" ] do nom_de_domaine=`zenity --entry --title="${DOMAIN_NAME_SELECT_TITLE_[${LANG4USER}]}" --text="${DOMAIN_NAME_SELECT_TEXT_[${LANG4USER}]}"` if [ $? != 0 ]; then exit 1 fi done if [ "${login}" == "" ]; then login=`zenity --entry --title="${USER_NAME_ENTER_TITLE_[${LANG4USER}]}" --text="${USER_NAME_ENTER_TEXT_[${LANG4USER}]}"` fi if [ "${login}" == "" ]; then login="anonymous" fi if [ "${password}" == "" ]; then password=`zenity --entry --title="${PASSWORD_ENTER_TITLE_[${LANG4USER}]}" --text="${PASSWORD_ENTER_TEXT_[${LANG4USER}]} ${login} ${PASSWORD_ENTER_TEXT2_[${LANG4USER}]} ${nom_de_domaine}" --hide-text` fi if [ "${password}" == "" ]; then password="anonymous" fi if [ "${destination}" == "" ]; then destination=`zenity --entry --title="${DIRECTORY_ENTER_TITLE_[${LANG4USER}]}" --text="${DIRECTORY_ENTER_TEXT_[${LANG4USER}]}" --entry\-text='/'` fi if [ "${destination}" == "" ]; then destination="/" fi destination=`echo $destination|sed 's/ /%20/'` if [ "$passive" == "" ]; then passive="0" zenity --question --text="${PASSIVE_QUERY_TEXT_[${LANG4USER}]}" if [ $? == 0 ]; then passive="1" fi fi #determination si on est passif ou non if [ $passive != "1" ]; then passive_args="set ftp:passive off ;" fi #envoie des fichiers repertoire_present=`echo "$NAUTILUS_SCRIPT_CURRENT_URI" | sed 's/\//\n/g' | sed 1d | awk '{printf "%s/", $0 }' | sed 's/\/\//\//g' ` cd "$repertoire_present" elements=`echo "$selection" | sed 's/ /\//g' | sed 's/"\//" /g' | sed 's/\/"/ "/g' ` final="" for goule in $elements do test=`echo $goule | sed 's/\//\ /g' | sed 's/"//g'` if [ -d "$test" ];then final="$final \"${test}/*\"" else if [ "$test" != "" ]; then final="$final \"${test}\"" fi fi done #On crée le repertoire de destination, #lftp $lftp_args -c "$passive_args open $nom_de_domaine ; user $login $password ; mkdir -p $destination" #on peut avoir une erreur mais cela indique juste que le repertoire existe fichier_arrive=`lftp $lftp_args -c "$passive_args open $nom_de_domaine ; user $login $password ; mput -d -O $destination $final ; ls $destination" 2>&1` transfert_reussi=`echo $?` #est-ce sur? if [ "$transfert_reussi" == "0" ]; then #fichier_arrive=`lftp $lftp_args -c "$passive_args open $nom_de_domaine ; user $login $password ; ls $destination"` if [ $notification == "0" ] ; then zenity --notification --text="$fichier_arrive" else zenity --info --text="$fichier_arrive" fi #Si le transfert est réussi, alors les options sont bonnes, on peut donc les sauvegarder if [ $sauvegarde == "1" ]; then echo "nom_de_domaine=\"$nom_de_domaine\"" > "$nom_fichier" echo "login=\"$login\"" >> "$nom_fichier" echo "destination=\"$destination\"" >> "$nom_fichier" echo "passive=\"$passive\"" >> "$nom_fichier" echo "notification=\"${notification}\"" >> "$nom_fichier" echo "sauvegarde=\"0\"" >> "$nom_fichier" fi exit 0 fi zenity --warning --text="${LFTP_ERROR_TITLE_[${LANG4USER}]} $fichier_arrive" exit -1