ubuntu-fr

Communauté francophone des utilisateurs d'Ubuntu

Planet Ubuntu-fr - Scripts

Fil des billets

dimanche, mai 4 2008

Gravatar de TaltanPour les nostalgiques de XMMS 1.XX sous Ubuntu Hardy Heron 8.04 via Taltan

xmms.1.2.11.png

Avis aux nostalgiques de WINAMP, XMMS dans sa branche 1.XX n'est plus intégré dans les dépôts depuis la version beta de Ubuntu Heron 8.04, XMMS est mort vive XMMS !! Il est remplacé par XMMS2. Alors certes, XMMS est un peu vieillot (les menus ne sont pas très hypes à cause de GTK+), mais il reste mon player MP3 par défaut depuis toujours, car (pas de troll svp ;) ce n'est que mon avis...) trés réactif, light, winamp like, bonne qualité de rendu sonore, égaliseur performant, simple à utiliser...

Alors voila comment installer la dernière version de la branche 1.XX, la version 1.2.11 n'est disponible qu'à partir des sources que j'ai compilés et transformés en paquet .deb avec l'utilitaire CheckInstall. Vous trouverez ci-dessous plusieurs façons d'installer XMMS 1.2.11 ainsi que quelques goodies indispensables :

Installation de XMMS 1.2.11 à partir du paquet xmms_1.2.11-1_i386.deb

wget http://taltan2.free.fr/dl/ubuntu/xmms_1.2.11-1_i386.deb
sudo dpkg -i xmms_1.2.11-1_i386.deb

Installation de XMMS 1.2.11 à partir des sources

Installation des dépendances (merci bishop ;) ) :

sudo apt-get install libasound2-dev libc6-dev libaudiofile-dev libaudiofile0 libesd0-dev libesd-alsa0 libgl1-mesa-dev libgl1-mesa-glx libgl1-mesa-dri libglib1.2-dev libgtk1.2-dev libice-dev libmikmod2-dev libogg0 libogg-dev libsm-dev libsm6 libvorbis0a libvorbis-dev libvorbisfile3 libx11-dev libx11-6 libxi-dev libxi6 libxxf86vm-dev libxxf86vm1 zlib1g-dev

Téléchargement des sources et compilation :

wget http://xmms.org/files/1.2.x/xmms-1.2.11.tar.gz
tar -xvzf xmms-1.2.11.tar.gz
cd xmms-1.2.11
./configure --prefix=/usr
make
sudo make install

Goodies

Téléchargement et installation de tous les skins

Les skins sont disponibles sur le site de XMMS, pour en avoir un aperçu en une seule page, c'est par ici : http://taltan2.free.fr/dl/ubuntu/xmms_all_skin.html

wget http://taltan2.free.fr/dl/ubuntu/xmms-all_skin.tar.gz
tar -xvzf xmms-all_skin.tar.gz -C ~/.xmms/Skins

Téléchargement et installation des présélections WINAMP pour l'égaliser

wget http://taltan2.free.fr/dl/ubuntu/xmms-winamp_presets.gz
gunzip -c xmms-winamp_presets.gz > ~/.xmms/eq.preset

Création du lanceur XMMS dans le menu Audio et vidéo de Gnome

cd ~/.local/share/applications
wget http://taltan2.free.fr/dl/ubuntu/XMMS.desktop

Concernant l'icône, par défaut en suivant cette méthode il s'agit de l'icône Gnome, vous pourrez aisément le changer en téléchargeant la panoplie d'icônes disponibles : http://www.xmms.org/files/icons/xmms-icons.tar.bz2

Play avec XMMS via les nautilus-scripts

Pour plus d'info sur les nautilus-scripts : http://www.taltan.fr/post/2006/06/07/14-les-nautilus-scripts

Pour Jouer dans XMMS tous le fichiers audio du dossier (et sous dossier) sélectionné à partir d'un click droit de la souris

#play_XMMS.sh
#!/bin/bash
xmms "$1"*

Script d'installation automatique

Pour simplifier tous ça, j'ai fait un petit script qui permet de réaliser toutes ces opérations one shot (hors nautilus-scripts), il s'agit du script XMMS-1.2.11_install.sh

  1. Installe le paquet xmms_1.2.11-1_i386.deb
  2. Télécharge et installe de tous les skins
  3. Télécharge et installe des présélections WINAMP pour l'égaliser
  4. Crée le lanceur XMMS dans le menu Audio et vidéo de Gnome
wget http://www.taltan.fr/public/dl/XMMS-1.2.11_install.sh
chmod +x XMMS-1.2.11_install.sh
./XMMS-1.2.11_install.sh

Liens

lundi, mars 24 2008

Gravatar de TaltanVirtualBox, simplifer la gestion du réseau avec un hôte Ubuntu via Taltan

Comme vous aviez pu le remarquer, j'utilise depuis un moment Vmware Server sur Ubuntu pour virtualiser des environnements. A titre de comparaison, j'ai testé plusieurs fois VirtualBox, mais je suis toujours revenu vers Vmware Server... car (entre autre) sa gestion du réseau en mode pont est native, aucune manipulation particulière n'est à faire sous Ubuntu pour avoir plusieurs machines virtuelles dans le même LAN, ce qui n'est pas le cas de VirtualBox. Alors évidement un petit tour sur le Wiki Ubuntu Fr suffit pour configurer un mode pont pour Virtual Box, mais l'aspect manuel se cette configuration ne joue pas en sa faveur. Voila le pourquoi de ce script qui permets de permets d'activer | désactiver et de configurer (X interfaces virtuelles en mode pont pour X machines virtuelles VBox) un pont sur un hôte Ubuntu (doit fonctionner sur une autre distribution avec peut-être quelques modifs)

Quelques explications

Mode NAT (Network Adress Translation)

Par défaut, VBox est configuré en mode NAT, c'est à dire que la machine virtuelle (VM) accède au LAN (réseau local) à travers la machine hôte par un routage NAT. Elle est donc séparée du réseau local, elle communique sur le LAN en envoyant de requêtes en utilisant l'adresse IP de la machine hôte. La machine hôte joue en quelque sorte le rôle de serveur DHCP pour l'interface réseau de la VM. La VM accède donc à l'extérieur en passant par la machine hôte. Avec cette configuration, on peut donc accéder à internet à partir de la VM mais pas se connecter directement sur la machine hôte, par exemple pour tester des services offerts par celle ci (samba, ftp, web,...)

Mode pont (bridge)

En mode pont (bridged dans Vmware) la VM accède directement au LAN via une interface réseau virtuelle « pontée » sur l'interface physique de la machine hôte. Vu de LAN, il y a une nouvelle machine avec une adresse IP qui lui est propre (même plage que la machine hôte), la VM utilise le serveur DHCP qui est sur le LAN (si présent). Il s'agit en fait d'utiliser le dispositif TUN / TAP. Un dispositif TUN / TAP est vu comme une interface réseau (virtuelle) qui communique avec un programme utilisateur (logiciel de virtualisation par exemple) en lieu et place d'une vraie carte matérielle

  • TUN pour « tunnel » qui simule du point à point, utilisé pour le mode NAT (routage) de VBox
  • TAP pour simuler un périphérique Ethernet, utilisé pour le mode pont (adaptateur réseau hôte dans VBox)

Objectif du script

Ce script (bridging_vb_tap_v1.0.sh) a donc pour objectif :

  • de créer à la demande (sans modifier en dur la configuration réseau de la machine hôte) plusieurs interface TAP (autant que de VM utilisant le mode « adaptateur réseau hôte » dans VBox) et de créer un pont pour les « ponter » à l'interface réseau physique (eth0 dans mon cas)
  • de pouvoir revenir à la configuration réseau initial de la machine hôte

Dépendances

Nécessite les paquets bridge-utils et uml-utilities

$ sudo apt-get install bridge-utils uml-utilities

Script bridging_vb_tap_v1.0.sh

NB : _/!\ Principe de précaution, utiliser cette méthode uniquement si vous avez un minimum de connaissance dans la configuration à la mano (en ligne de commande) d'un réseau sous linux..._

#!/bin/bash
############################################################################################
# Taltan - http://www.taltan.fr - ola.taltan_AT_laposte.net                                #
############################################################################################
# Script bridging_vb_tap_v1.0.sh                                                           #
# Licence : GNU / GPL                                                                      #
# Inspiré de la doc sur le wiki Ubuntu                                                     #
#  - http://doc.ubuntu-fr.org/virtualbox_reseau#alternative                                #
# et du post de kesou sur le forum Ubuntu                                                  #
#  - http://forum.ubuntu-fr.org/viewtopic.php?id=148609                                    #
############################################################################################
# Dans le cadre de l'utilisation de VirtuaBox en mode pont                                 #
#  - Création des interfaces réseaux virtuelles tapX                                       #
#  - Création du pont réseaux entre l'interface physique et les virtuelles                 #
############################################################################################
# Dépendances                                                                              #
############################################################################################
#  - Nécessite les paquets bridge-utils et uml-utilities                                   #
#    => sudo apt-get install bridge-utils uml-utilities                                    #
############################################################################################
# 24/03/08 - v1.0 - Création                                                               #
############################################################################################
## Variables
gateway=192.168.0.254      # adresse ip de la passerelle
bridge=br0                  # nom du pont
if_hote=eth0            # interface physique actuelle
DHCP=NO    # DHCP pour le pont YES | NO
bridge_ip=192.168.0.1      # adresse ip du pont si DHCP=NO
bridge_mask=255.255.255.0       # masque du pont si DHCP=NO
bridge_bc=192.168.0.255  # adresse ip de broadcast si DHCP=NO
nb_tap=2                        # nombre d'interfaces virtuelles tapX
vb_user=taltan      # utilisateur de VirtualBox

## Fonction de mise en place du pont
start () {
        chmod 0666 /dev/net/tun  
        brctl addbr $bridge          # création du pont
        brctl addif $bridge $if_hote    # ajout de l'interface physique dans le pont
        var0=0        # initialisation du compteur de tapX
        while [ "$var0" -lt "$nb_tap" ]
        do     
                name_tap=tap${var0}     # initialisation du nom de l'interface virtuelle, tap0 pour la première, tap1, tap2...     
                tunctl -u $vb_user -t $name_tap # création de l'interface virtuelle
                ifconfig $name_tap up      # activation de l'interface virtuelle           
                brctl addif $bridge $name_tap   # ajout de l'interface virtuelle dans le pont
                ifconfig $name_tap 0.0.0.0 promisc up   # configuration ip de l'interface virtuelle               
                let "var0 += 1"   # incrémentation du compteur de tapX
        done   
        ifconfig $if_hote 0.0.0.0 promisc up    # configuration ip de l'interface physique
        if [ "$DHCP" == "YES" ]; then      # si DHCP=YES
                dhclient $bridge                # configuration dhcp pour le pont
                sleep 10
        else                    # si DHCP=NO
                ifconfig $bridge $bridge_ip netmask $bridge_mask broadcast $bridge_bc # configuration manuelle pour le pont
        fi
        route add default gw $gateway      # configuration de la passerelle pour le pont
        brctl showstp $bridge         # affiche les info sur le pont
}

## Arrêt et suppression du pont puis restauration de la configuration réseau initiale
stop () {
        TESTPONT=$(/sbin/ifconfig | grep $bridge)       # si aucun pont configuré, message
        if [ -z "$TESTPONT" ]; then
                echo "Attention : pont réseau non trouvé. Vérifier la config réseau ..."
                exit 1
        fi            
        ifconfig $bridge down      # désactivation du pont
        brctl delbr $bridge          # suppression du pont
        var0=0 
        while [ "$var0" -lt "$nb_tap" ] # pour chaque interface virtuelle tapX
        do     
                name_tap=tap${var0}        
                tunctl -d $name_tap     # suppression       
                let "var0 += 1"
        done
        ifconfig $if_hote down    # restauration de la configuration réseau initiale
        ifconfig $if_hote up
        if [ "$DHCP" == "YES" ]; then   
        sleep 5 
        fi
        ifconfig                        # affiche la configuration réseau
}

## information sur le bridge
info () {
        brctl showstp $bridge
}

## Point d’entrée du script
case $1 in
        start)
                start $2
        ;;
        stop)
                stop $2
        ;;
        info)
                info $2
        ;;
        *)
                echo $"Utilisation: bridging {start|stop|info}"
                exit 1
esac
exit 0

Pour une utilisation ponctuelle

N'oubliez pas de modifier les variables selon votre configuration... et de rendre le script exécutable. Placer le script dans un « path » de votre système Ubuntu

$ sudo cp bridging_vb_tap_v1.0.sh /usr/local/bin/bridging_vb_tap
$ sudo chmod +x /usr/local/bin/bridging_vb_tap

Pour la mise en place du pont :

$ sudo bridging_vb_tap start

Résultat de la commande dans le cas de la création d'un pont avec eth0, tap0 et tap1 :

bridging_vb_tap01.png

Arrêt et suppression du pont puis restauration de la configuration réseau initiale :

$ sudo bridging_vb_tap stop

Résultat de la commande :

bridging_vb_tap02.png

Configuration de la VM dans VBox pour utiliser le mode bridge

Dans la configuration réseau de votre VM :

  • cocher Activer l'adaptateur réseau
  • choisir Adaptateur réseau hôte
  • laisser l'adresse MAC par défaut
  • cocher câble relié
  • nom de l'interface : tap1 (ou tap0)
  • laisser blanc application d'installation et de désinstallation

bridging_vb_tap03.png

Et voila le tour est joué, depuis j'utilise très régulièrement VBox et je dois dire qu'en plus d'être GPL (ce que n'est pas VMware Server) je le trouve plus réactif que VMware Server (pas de troll svp ;) )

PS : Concernant l'installation de VBox sur Ubuntu 8.04 Hardy Heron, j'ai suivi la méthode décrite pour Ubuntu 7.10 Gutsy Gibbon dans le wiki Ubuntu, c'est pas très « propre », mais il n'y pas encore de dépôts officiels pour Hardy Heron sur le site de VirtualBox et ça marche nickel... Même chose pour l'activation de l'USB, il suffit de suivre le tuto sur le wiki

samedi, août 18 2007

Gravatar de TaltanRenommer massivement en 2 clics des fichiers ou dossiers avec Nautilus via Taltan

Pour faire suite à ce billet de Racoon qui présente GPRename, voila une petite mise à jour de sa procédure d'installation en version 2.4 sous Ubuntu et la façon de l'intégrer simplement dans Nautilus via les Nautilus-scripts ou les Nautilus-actions.

Présentation :


GPRename est un ensemble de scripts perl sous licence GNU/GPL qui permet, via une interface graphique en GTK2, de renommer massivement des fichiers ou des dossiers en leur appliquant un traitement particulier.

Installation :

Dépendances :

sudo apt-get install gettext libgtk-perl

À partir du .deb :

Télécharger le paquet gprename_2.4-1_i386.deb, puis l'installer via GDebi ou la commande dpkg :
Pour les adeptes du copier / coller, la méthode installation en une ligne de commande :
wget http://www.taltan.fr/public/dl/gprename_2.4-1_i386.deb && sudo dpkg -i gprename_2.4-1_i386.deb
Merci à Albinodrew ... ;)

Méthode manuelle :

Télécharger l'archive gprename-2.4.tar.bz2 puis la décompresser :
tar xvjf gprename-2.4.tar.bz2
Dans le dossier gprename-2.4
cd gprename-2.4
sudo make install
Voila c'est installé, vous pouvez lancer GPrename en invoquant la commande gprename ou à partir menu Accessoires / GPRename


Pour les adeptes du copier / coller, la méthode installation en une ligne de commande :
sudo apt-get install gettext libgtk-perl && wget http://downloads.sourceforge.net/gprename/gprename-2.4.tar.bz2 && tar -xvjf gprename-2.4.tar.bz2 && cd gprename-2.4 && sudo make install

Intégration dans Nautilus :

Via Nautilus-actions :

Si ce n'est pas déja fait, installer le paquet nautilus-actions
apt-get install nautilus-actions
Importer l'action Batch Rename (fichier config_38643db8-62c7-44e1-96ee-98fc9360a2cd.schemas), menu Système / Préférences / Configuration des actions Nautilus / Importer. Il suffira par la suite, après avoir sélectionner les fichiers à renommer, de faire un clic droit / Batch Rename

Via Nautilus-scripts :

Créer le script bash GPrename.sh :
#!/bin/bash
gprename "$1"
Le copier dans le dossier ~/.gnome2/nautilus-scripts puis le rendre exécutable
cp GPrename.sh ~/.gnome2/nautilus-scripts
chmod +x ~/.gnome2/nautilus-scripts/GPrename.sh
Il suffira par la suite, après avoir sélectionner les fichiers à renommer, de faire un clic droit / Scripts / GPrename.sh

Références :

mardi, juillet 17 2007

Gravatar de TaltanScript de renommage de photos selon les données EXIF via Taltan

Avec les photos numériques on ne compte pas, on prend des dizaines (voir des centaines) de photos puis on les importe sur le PC pour les trier. Personnellement j'utilise gThumb car il est léger, simple à utiliser, n'est pas usine à gaz, dispose de fonctionnalités assez avancées et en plus est intégré nativement dans Ubuntu. Le premier de ces tris est le renommage, j'ai l'habitude de renommer mes photos en fonction de la date de prise de vue (+ une numérotation) ce qui permet par la suite d'effectuer un tri chronologique dans l'explorateur de fichiers et d'avoir un nom unique.

il est possible de renommer massivement des photos en fonction des données EXIF avec gThumb mais le meilleur résultat que j'ai pu en tirer est un nom de fichier sous la forme 2006-11-04--19.41.56_007.jpg. C'est presque le résultat attendu sauf que je n'ai pas trouvé le moyen d'enlever le double tiret et les secondes qui sont superflus. Voila le pourquoi de ce script, utilisé via les scripts nautilus, en deux clics il permet de renommer une série de photos sous la forme 2006-11-04_19.41_007.jpg

Dépendances :

$ sudo apt-get install imagemagick zenity

Script exif_photos_rename_v1.1.sh :

  • 27/07/07 - v1.1
    • Réorganisation
    • Choix du début de numérotation, par défaut à 1
  • 15/07/07 - v1.0
    • Création
#!/bin/bash
############################################################################################
# Taltan - http://www.taltan.fr -                                                          #
############################################################################################
# Script exif_photos_rename_v1.1.sh                                                        #
# Licence : GNU / GPL                                                                      #
############################################################################################
# Renomme les photos selon les données EXIF sous la forme :                                #
# ${aa}-${mm}-${jj}_${hh}.${min}_${numero}.ext  => ex : 2006-11-04_19.41_007.jpg           #
# Fonctionne pour une numérotation de 001 à 999                                            #
############################################################################################
# Dépendances                                                                              #
############################################################################################
#  - Nécessite le paquet imagemagick : http://doc.ubuntu-fr.org/imagemagick                #
#  - Nécessite le paquet zenity                                                            #
#    => sudo apt-get install imagemagick zenity                                            #
############################################################################################
# 15/07/07 - v1.0 - Création                                                               #
# 27/07/07 - v1.1 - Réorganisation                                                         #
#                 - Choix du début de numérotation, par défaut à 1                         #
############################################################################################
## Variables
nb_param="$#" # nb de paramètres passés au script
erreur=0 # initialisation du compteur d'erreurs à 0

## Fonctions début de numérotation
début_numerot ()
{
                numParam=`zenity --title "Début de numérotation" --entry-text="1" --entry --text "Par défaut à 1, à modifier le cas échéant :"`
                if  [ $? != 0 ]; then # si fermeture
                        exit 1
                fi
                        [ $? -ne 0 ] && exit 2 # si annulation
}

## Fonctions renommage des fichiers
rename_jpeg ()
{
        for parametre in "$@"; # pour chaque fichier selectionné
        do # faire
                old_name="$parametre" # on définie le nom du fichier actuel
                date_time=`identify -format "%[EXIF:DateTime]" "$parametre"` # création de la variable date / heure de la photo (ex: 2006:11:04 19:41:30. )
                extension=`echo $parametre | awk -F "." '{print $NF}'` # création de la variable extension du fichier (ex : .jpg)     
                aa=`echo $date_time | cut -d: -f1` # création de la variable année (ex : 2006)
                mm=`echo $date_time | cut -d: -f2` # création de la variable mois (ex : 11)
                jj=`echo $date_time | cut -d: -f3 | cut -c1-2` # création de la variable jour (ex : 04)
                hh=`echo $date_time | cut -d: -f3 | cut -c4-5` # création de la variable heure (ex : 19)
                min=`echo $date_time | cut -d: -f4` # création de la variable minute (ex: 41)
                # création de la variable numérotation       
                if [ $numParam -gt 0 ] && [ $numParam -lt 10 ]; then # pour les paramètres 1 à 9
                        numero=00$numParam # rajouter 2 digit => 001, 002, 003,..., 009
                fi
                if [ $numParam -gt 9 ] && [ $numParam -lt 100 ]; then # pour les paramètres 10 à 99
                        numero=0$numParam # rajouter 1 digit => 010, 011, 012,..., 099
                fi
                if [ $numParam -gt 100 ] ; then # pour les paramètres supérieur à 100
                        numero=$numParam # ne pas rajouter de digit => 100, 101, 102,...
                fi           
                new_nane=`echo ${aa}-${mm}-${jj}_${hh}.${min}_${numero}.${extension}` # on définie le nouveau nom => 2006-11-04_19.41_num.jpg
                cp "$old_name" "${new_nane}" # on renomme le fichier en le copiant
                if [ $? = 0 ] ; then # si la copie a reussi    
                        echo "${old_name} => ${new_nane} .... OK"
                        rm -f "$old_name" # => supprime le fichier original
                else # si la copie a echoué
                        echo "Impossible de renommer $old_name .... NOK" # => message d'erreur
                        let $[erreur += 1] # incrémentation du compteur d'erreur
                fi
                let $[numParam += 1] # incrémentation du numéro de paramètre
        done
        nb_renomme=$(( $nb_param - $erreur )) # création de la variable nombre de fichiers renommés
        echo "-----------------------------------------"               
        echo "Fin de traitement : $# fichiers "
        echo "-----------------------------------------"
        echo "Fichiers renommes : $nb_renomme"
        echo "Fichiers en erreur : $erreur"
        echo "-----------------------------------------"
        echo "OK, vous pouvez fermer !"
}

## Traitement
if [ "$#" -eq 0 ]; then # si aucun fichier n'est selectionné => mesage d'erreur
        zenity --error --title="error" --text="Selectioner au moins 1 fichier"
        exit 1
fi
début_numerot
rename_jpeg "$@" | zenity --text-info --title "exif_photos_rename" --width=500 --height=500

Mise en place :

Placer le script exif_photos_rename_v1.1.sh dans le dossier ~/.gnome2/nautilus-scripts, puis le rendre exécutable

$ sudo chmod +x ~/.gnome2/nautilus-scripts/exif_photos_rename_v1.1.sh

Utilisation :

Sélectionner les photos à traiter, puis clic droit / Scripts / exif_photos_rename.sh exif_photos_rename_01.png

Cliquer sur Valider ou modifier le début de numérotation le cas échéant : exif_photos_rename_00.png

Résultat :

exif_photos_rename_02.png

exif_photos_rename_03.png

NB : _/!\_ Par principe de précaution, je vous conseille de commencer à utiliser un script qui, au final supprime ou modifie un fichier, sur une copie de vos photos, histoire de voir que tout se passe bien ;)