{{tag>administration}} ---- ====== FUSAUTO ====== **FUSAUTO** est un script python pour faciliter l'usage de [[fuse | FUSE]]. Il a besoin d'un répertoire en paramètre, ce répertoire doit contenir un fichier de configuration utilisé par **FUSAUTO** et permet de monter / démonter ce répertoire avec [[fuse | FUSE]] automatiquement. ===== Script python 'fusauto' ===== Pour profiter de **FUSAUTO**, il faut créer le fichier contenant le script. Deux options : * soit vous l'incluez pour votre utilisateur seulement : [[:tutoriel:comment_editer_un_fichier|~/.local/bin/fusauto]] * soit vous l'incluez pour tous les utilisateurs (nécessite [[sudo]]): [[:tutoriel:comment_editer_un_fichier|/usr/local/bin/fusauto]] Y copier les lignes suivantes et sauvegarder. #! /usr/bin/env python # coding: utf-8 # # fusauto # auto mount directory with fuse by reading a config file # # Copyright (C) Nicolas Albert # # Version 0.0.1 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import sys, os def runconf(conf, path): file = open(conf, "r") act = {} for line in file.readlines(): if not line.startswith('#'): part = line[:-1].partition('=') act[part[0]] = part[2] file.close() if 'bin' in act: if not 'from' in act: act['from']='none' if not 'opt' in act: act['opt']='' os.system("%s %s %s -o nonempty %s"%(act['bin'], act['from'], path, act['opt'])) def getfuses(): mtab = open("/etc/mtab", "r") fuses =[ line for line in mtab.readlines() if line.split()[2][0:4] == "fuse" ] mtab.close() return fuses def alreadymount(path): for fuse in getfuses(): fd = fuse.split()[1] if fd == path or fd == os.getcwd()+'/'+path: return True return False def umount(path): os.system("/bin/fusermount -u "+path) if __name__ == "__main__": if len(sys.argv) == 2 and os.path.isdir(sys.argv[1]): if alreadymount(sys.argv[1]): umount(sys.argv[1]) else: conf = sys.argv[1]+'/fusauto.conf' if os.path.isfile(conf): runconf(conf, sys.argv[1]) else: print conf,"is required" else: print "One directory is required"'' Il faut rendre le script exécutable : ''chmod u+x ~/.local/bin/fusauto'' ou ''sudo chmod a+rx /usr/local/bin/fusauto'' ===== Fichier de configuration 'fusauto.conf' ===== Pour fonctionner, **FUSAUTO** a besoin d'un répertoire contenant un fichier de configuration du nom de **fusauto.conf** Rien de mieux qu'un exemple ! Je veux monter un répertoire distant d'une machine (siniath-tirith) dans le répertoire __~/Network/Siniath-Tirith__ à l'aide d'sshfs (créer le répertoire au besoin). Je crée un nouveau fichier __~/Network/Siniath-Tirith/fusauto.conf__ dont le contenu est : Il est important de ne mettre aucun espace avant le 1er signe égal sur les lignes qui ne sont pas des commentaires, sans quoi le script ne marchera pas correctement. # fusauto config file # lines start with # are commentaries # process must be run (must exist) bin=/usr/bin/sshfs # remote folder (default : none) from=siniath-tirith:/mnt/big1/data # fuse options (default : ) opt=-o follow_symlinks,transform_symlinks,workaround=rename,idmap=user ===== Utilisation ===== Il suffit d'appeler **FUSAUTO** avec en paramètre, un répertoire contenant un fichier de configuration. **FUSAUTO** monte le répertoire s'il ne l'est pas déjà, sinon il le démonte. === Shell === ''fusauto ~/Network/Siniath-Tirith'' === Nautilus === On va utiliser la possibilité de [[nautilus_scripts|script pour Nautilus]] pour pouvoir monter/démonter directement. Pour cela, on va lier le script dans le répertoire __~/.gnome2/nautilus-scripts__ : ln -s `which fusauto` ~/.gnome2/nautilus-scripts/ Désormais, un clic-droit sur un répertoire propose 'Scripts>fusauto'. === Rox-Filer === On va utiliser la possibilité de script pour rox-filer pour pouvoir monter/démonter directement. Pour cela, on va lier le script dans les répertoires __~/.config/rox.sourceforge.net/SendTo/.inode_directory__ et __~/.config/rox.sourceforge.net/SendTo/.inode_mount-point__ : ln -s `which fusauto` ~/.config/rox.sourceforge.net/SendTo/.inode_directory/ ln -s `which fusauto` ~/.config/rox.sourceforge.net/SendTo/.inode_mount-point/'' Désormais, un clic-droit sur un répertoire propose 'Rép. > fusauto'. ===== Liens et références ===== * [[https://forum.ubuntu-fr.org/viewtopic.php?id=178262|Commentaires et discussion ici]]. ---- //Contributeurs : NicoA380 [[http://forum.ubuntu-fr.org/profile.php?id=2745|+]].//