Tag script

  • Rechercher des fichiers sur un critère de nombre de lignes

    L’un de mes scripts génère des fichiers de résultats et ceux ci commencent par un entête connu. Comme le script n’est pas parfait, il génère des fichiers sans aucun contenu autre que l’entête.
    Pour corriger cette anomalie, il faut empêcher le script de générer les fichiers inutiles et il s’agit certainement de la meilleure solution. Mais il est également possible de supprimer les fichiers ne contenant que l’entête.

    Avec qu’elle commande peut on supprimer des fichiers contenant un certain nombre de ligne ?

    lire la suite

  • Connaitre son adresse IP publique

    Parfois, il est utile de connaitre son adresse IP publique. Rien de difficile, il suffit de se rendre sur l’une des adresses suivantes et elle sera affichée :

    Si l’on veut utiliser cette adresse dans un script comme Conky, il faut utiliser la commande :

        wget -q -O - checkip.dyndns.org | sed -e 's/[^[:digit:]|.]//g'
    

    Les liens fonctionnent quelque soit le système d’exploitation. Par contre, sous windows, il faut installer wget au préalable ; il est téléchargeable depuis cette page et la version portable est disponible sur celle-ci.

    Si curl est installé sur votre système, vous pouvez également utiliser l’une des commandes suivantes :

        echo `curl -s http://myip.dnsomatic.com`
    
        curl ifconfig.me
    
        curl icanhazip.com
    

    En se rendant à l’adresse http://ifconfig.me/ on peut découvrir d’autres paramètres.

    lire la suite

  • Supprimer des process avec la commande xargs

    Sur un serveur en Solaris 7, suite au remplissage d’un FileSystem, des process démarraient mais ne se fermaient pas correctement car les codes d’erreurs ne doivent pas être interprêtés correctement. Au final, on se retrouve avec plus de 2000 process qui ne devraient pas être présents et une machine qui rame car le nombre de process est trop important et que toutes les ressources sont occupées.

    Pour résoudre le problème on peut rebooter le serveur (méthode windows : toute machine doit être rebootée plusieurs fois par jour), ou alors supprimer les process consommateurs de ressource.

    lire la suite

  • Le GPS Evadeo X60 et les convertions des fichiers de traces

    Comme beaucoup, j’ai cédé à la mode et je me suis acheté un GPS. Mon choix s’est porté sur le modéle Evadéo X60 de l’IGN.

    Le critère principal ayant guidé mon choix est le fait que les GPS de l’IGN permettent de charger des cartes au format 1:25000. Ils sont donc utilisables lors des randonnées.
    Pour la compatibilité avec Linux, il faut insérer la carte SIM du GPS dans le lecteur du PC et y copier ou récupérer les données avec le gestionnaire de fichier (Nautilus puisque j’utilise Gnome). Pour tracer mes randonnées, j’utilise une VM (Virtual Machine ou Machine Virtuelle) dans laquelle fonctionne le logiciel IGN-Rando sous XP.

    Hormis l’apprentissage du GPS, la difficulté se situe dans les formats des fichiers de traces qui sont différents suivant l’outil utilisé.

    Les formats des fichiers de traces

    Pour manipuler les tracés des circuits de randonnées, je suis obligé d’utiliser 4 formats différents de fichiers :

    1. IGN-Rando sauvegarde les tracés sous un format rdn. Tous mes tracés de randonnées utilisent ce format.
    2. Google utilise le format KML pour Google-Map et Google-Earth. J’utilise ce format pour publier des aperçus des randonnées sur la site de Henchou Don Lanvaeleg.
    3. Le GPS Evadeo sait lire des tracés au format gpx.
    4. Les traces capturées par la GPS sont au format TRK

    Le logiciel IGN-Rando n’est plus commercialisé, il a été remplacé par Georando

    Avec tous ces formats différents, il faut pouvoir passer de l’un à l’autre sans devoir refaire le tracé !

     

    Gpsbabel : l’outil de conversion

    Heureusement, une solution existe pour la conversion des différents formats de fichier, il s’agit de gpsbabel. Il est disponible pour différentes distributions et sous Ubuntu, il s’installe avec la commande

        sudo apt-get install gpsbabel
    

    Il existe également une interface graphique pour gpsbabel, il s’agit de gebabbel qui s’installe avec la commande

        sudo apt-get install gebabbel
    

    L’outil gpsbabel existe également pour Windows, mais n’ayant pas de poste sous cet OS, je ne l’ai pas testé.

    La syntaxe pour utiliser gpsbabel est la suivante :

        /usr/bin/gpsbabel [options] -i INTYPE -f INFILE -o OUTTYPE -F OUTFILE
    

    avec :

    • options donne le type de tracé à convertir
    • INTYPE le type du fichier d’entrée et INFILE le nom du fichier d’entrée
    • OUTYPE le type du fichier de sortie et OUTFILE le nom du fichier de sortie

    Le détail des options et des types de fichiers est donné dans l’aide (commande man gpsbabel`) ou sur cette page.

    Les commandes de convertion

    Pour les différentes convertions que j’ai besoin, j’utilise les commandes suivantes :

    • convertir un fichier RDN vers GPX
        gpsbabel -t -N -i ignrando -f Ma_Rando.rdn -o gpx -F Ma_Rando.gpx
    
    • convertir un fichier RDN vers KML
        gpsbabel -t -N -i ignrando -f Ma_Rando.rdn -o kml -F Ma_Rando.kml
    
    • convertir un fichier KML vers GPX
        gpsbabel -t -N -i kml -f Ma_Rando.kml -o gpx -F Ma_Rando.gpx
    
    • convertir un fichier TRK vers RDN
        gpsbabel -t -i compegps -f Ma_Rando.TRK -o ignrando -F Ma_Rando.rdn
    

    Automatiser les convertions

    Pour faciliter ces différentes convertions, j’utilise un script Nautilus qui réalise le traitement en fonction du type de fichier.

    lire la suite

  • Renommer des fichiers

    Pour renommer facilement des fichiers, rien de plus pratique qu’un script nautilus !
    J’ai modifié mon script décrit sur cette page pour que le nouveau nommage garde l’ordre de tri.

    Pour installer ce script, il faut copier le contenu dans un fichier du dossier $HOME/.gnome2/nautilus_scripts, chez moi il s’appelle renomme_fichier.sh. Il faut ensuite le rendre exécutable avec la commande `chmod 755 renomme_fichier.sh.

    Dépendance : zenity est requis pour afficher les fenêtres d’information, pour l’installer : aptitude install zenity.

    Il a été testé sous Debian SID et Ubuntu 9.04, il doit fonctionner avec n’importe qu’elle distribution.

        #!/bin/bash
    
        # Author : YLP http://www.saintcarre.fr/
        # depends: zenity
        #
        # version 0.1 du 24/11/2008, creation
        # Objet : renomme les fichiers sélectionnés en gardant l'extension
        #
        # Version 0.2 du 27/08/2009
        # La numerotation se fait sur 3 digit pour faciliter les tris.
    
        #=========================================
        # Definition des messages
        title="Renommage de fichiers JPG"
        err1="Il faut sélectionner un ou plusieurs fichiers."
        chaine="Les fichiers seront renommés avec la racine spécifiée suivi d'un N° de 001 à XXXXXX."
        entree="Nouvau nom"
        err2="Vous n'avez pas saisi de nom de fichier."
        msg_renomm="Renammage en cours ..."
        #=========================================
    
        curdir=`pwd`
    
        #test if a file has been selected
        if [ $# -eq 0 ]; then
         zenity --error --title="Error" --text="$err1"
         exit 1
        fi
    
        #Choix du nouveau nom des fichiers
        NouvNom=`zenity --entry --title "$title" --text "$chaine" --entry-text "$entree" `
    
        #if $? != 0, user click on cancel button, so exit
        if [ "$?" != 0 ] ; then
         exit
        fi
        #Verification du nom du fichier
        if [ ! "$NouvNom" ]; then
         zenity --error --title="$title" --text="$err2"
         exit 1
        fi
    
        nbfiles=$#
    
        #=========================================
        #echo "Renommage des fichiers, nombre de fichiers a traiter : $#"
        num=0
        (while [ $# -gt 0 ]; do
         type=`echo $1 | cut -f2 -d"."`
         let "compteur += 1"
         num=$(($num+1))
         if [ $num -gt 0 ] && [ $num -lt 10 ]; then # pour les paramètres 1 à 9
         numero=00$num # rajouter 2 digit => 001, 002, 003,..., 009
         fi
         if [ $num -gt 9 ] && [ $num -lt 100 ]; then # pour les paramètres 10 à 99
         numero=0$num # rajouter 1 digit => 010, 011, 012,..., 099
         fi
         if [ $num -gt 100 ] ; then # pour les paramètres supérieur à 100
         numero=$num # ne pas rajouter de digit => 100, 101, 102,...
         fi
    
         #echo "Renomage de $1 en $NouvNom-$numero.$type"
         mv $1 $NouvNom-$numero.$type
         let "progress = compteur*100/nbfiles"
         echo $progress
         shift
        done
        ) | zenity --progress --auto-close --title="$title"  --text="$msg_renomm" --percentage=0
    
        exit
    

    lire la suite

  • Savoir si un reboot est requis après une mise jour

    Suite à certaines mises à jour, il est nécessaire de redémarrer le système pour qu’elles soient prises en compte, en particulier pour les mises à jour du noyau.

    Si l’on est connecté directement sur le PC, on voit l’icone de notification dans la barre de menu de Gnome. Si l’on accède à distance à cette station, on ne voit généralement pas cette icone !

    lire la suite

  • Enchainer des actions via SSH sur plusieurs PC

    SSH est le protocole sécurisé d’accès distant à des stations ou des serveurs sous Linux ou Unix. A chaque connexion vers une machine distante, il faut saisir sa passphrase pour s’authentifier. Dans le cas ou l’on veut enchainer une suite d’opération sur une liste de machine, cette saisie devient vite fatigante.

    Pour éviter cet inconvénient, certains génèrent des clefs SSH sans passphrase ce qui est en contradiction avec avec l’objectif premier de SSH : sécuriser l’accès. En utilisant ssh-agent,  il est possible de saisir qu’une seule fois et d’enchainer une opération sur plusieurs stations.

    lire la suite

  • Memento sed

    Quelques commandes utiles avec la fonction sed.

    J’avais déja pris quelques note sur sed dans cet article sed : afficher un fichier sans les lignes de commentaires

    lire la suite

  • Convertion d'images

    L’outil ImageMagick permet de manipuler les images, en particulier de les redimensionner sur un site internet.
    L’outil Jhead permet de lister et de modifier les données Exif d’une image.
    Les images publiées sur ce site et sur celui de Henchou Don Lanvaeleg sont préparées en utilisant ces outils.

    lire la suite

  • Script Nautilus renommer des fichiers

    Dans l’environnement Linunx/Gnome, il y a une fonction intéressante, ce sont les scripts Nautilus. Ils apparaisent dans le menu du “clic droit” et permettent de réaliser une fonction programmée sur un ou plusieurs fichiers.
    Ces scripts sont localisés dans le répetoire ~/.gnome2/nautilus-scripts, certains utilisent l’interface graphique zenity.

    Ce script a évolué, il faut regarder la nouvelle édition qui garde l’ordre des fichiers

    Le script Renomme_fichier.bash

    J’ai créé ce script pour résoudre un problème simple : renommer facilement le nom des photos issuent de mon appareil numérique.

    Les fichiers issuent d’un appareil photo numériques ont un nom sous forme d’un numéro. Pour mon Olympus, il est du type p1010xxx.jpg ou xxx est le N° de la photos dans la série de prise de vues.
    Au bout d’un certain temps, vous vous retrouvez avec plusieurs fichiers portant le même nom et je trouve cela ch..t même si mes photos sont classées par date et évènements.

    Fonctionnement du script

    Le script peut être utilisé via le menu des scripts Nautilus ou en mode commande. Vous devez lui passer en paramètre la liste des fichiers à renommer.

    Les étapes du script :

    1. Controle des paramètres : il faut fournir au moins 1 fichier à renommer. Si ce paramètre est omis, il y a sortie avec un code d’erreur 1
    2. Nouveau nom du fichier : une fenêtre Zenity permet de saisir la racine du nouveau nom du fichier. Le nom du fichier sera composé de la racine fournie suivie d’un numéro.
      Si vous souhaitez renommer 10 fichiers avec comme racine de nom bonjour, ils seront renommés en bonjour_1 à bonjour_10
    3. Controle de la racine du nom : si vous validez la boite de saisie du nouveau nom en laissant une chaine vide, il y a sortie avec le code d’erreur 1. Si vous sélectionnez le bouton Cancel, il y a sortie sans erreur.
    4. Renommage des fichiers : il s’agit d’une boucle qui renommer les fichiers en gardant le type original. Un fichier ancien-nom.jpg sera donc renommé en nouveau-nom_1.jpg.

    Contenu du script renomme_fic.bash :

        #!/bin/bash
        # Author : http://www.saintcarre.fr/
        # Date : 24/11/2007
        #depends: imagemagick, zenity
        #
        #version 0.1
        #Objet : renomme les fichiers sélectionnés en gardant l'extension
        #
        #=========================================
        # Definition des messages
        title="Renommage de fichiers JPG"
        err1="Il faut sélectionner un ou plusieurs fichiers."
        chaine="Les fichiers seront renommés avec la racine spécifiée suivi d'un N° de 1 à $NbFic."
        entree="Nouvau nom"
        err2="Vous n'avez pas saisi de nom de fichier."
        msg_renomm="Renammage en cours ..."
        #=========================================
        curdir=`pwd`
        #test if a file has been selected
        if [ $# -eq 0 ]; then
        zenity --error --title="Error" --text="$err1"
        exit 1
        fi
        #Choix du nouveau nom des fichiers
        NouvNom=`zenity --entry --title "$title" --text "$chaine" --entry-text "$entree" `
        #if $? != 0, user click on cancel button, so exit
        if [ "$?" != 0 ] ; then
        exit
        fi
        #Verification du nom du fichier
        if [ ! "$NouvNom" ]; then
        zenity --error --title="$title" --text="$err2"
        exit 1
        fi
        nbfiles=$#
        #=========================================
        #echo "Renommage des fcihiers, nombre de fichiers a traiter : $#"
        num=1
        (while [ $# -gt 0 ]; do
        type=`echo $1 | cut -f2 -d"."`
        let "compteur += 1"
        num=$(($num+1))
        #echo "Renomage de $1 en $NouvNom-$num.$type"
        mv $1 $NouvNom-$num.$type
        let "progress = compteur*100/nbfiles"
        echo $progress
        shift
        done
        ) | zenity --progress --auto-close --title="$title"  --text="$msg_renomm" --percentage=0
        exit
    

    Installation du script

    Vous devez créer un fichier dans le répertoire ~/.gnome2/nautilus-scripts et l’ouvrir avec votre éditeur préféré (vi, nano, emacs …). Copier le contenu du script fournit au dessus dans le fichier et sauvegarder ce fichier.

    Pour que ce fichier soit exécutable, il faut modifier les droits :

    • ouvrez un terminal
    • allez dans le répertoire du script cd ~/.gnome2/nautilus-scripts
    • modifiez les droits sur fichier chmod 744 renomme_fic.bash pour qu’il soit exécutable par son propriétaire et lisible par tous, chmod 766 renomme_fic.bash pour qu’il soit exécutable et lisible par tous.

    A faire

    Ce script n’est pas parfait, voici quelques idées :

    • choisir le N° du premier fichier renommé
    • renommer les fichiers dans les sous répertoires

     

    lire la suite

subscribe via RSS