Mettre à jour tous les dépot git d’un répertoire

Voici une petite astuce qui me permet de mettre à jour tous les dépots git d’un répertoire. Pratique quand on a plein de sous-dépot.   Shell # For use in a shell: # Download this file to /usr/local/bin/git-pull-recursive, then chmod 755 it to install git-pull-recursive find . -type d -name .git -exec sh -c "cd \"{}\"/../ && pwd && git pull" \; 123 # For use in a shell:# Download this file to /usr/local/bin/git-pull-recursive, then chmod 755 it to install git-pull-recursivefind . -type d -name .git -exec sh -c "cd \"{}\"/../ && pwd && git pull" \;...

Read More

Créer des boîtes de dialogues en Bash

Créer des boîtes de dialogues en Bash

Bonjour à tous, Aujourd’hui une petite astuce assez sympa pour apprendre à créer des programmes bash un petit plus « fancy » grâce à whiptail. Vous savez ces petites boîtes de dialogues que l’on peut retrouver dans ce genre d’exemple : Nous allons voir comment créer ce genre de boîtes de dialogues. Sans plus tarder nous allons rentrer dans le vif du sujet 1. La Message Box La prmière boîte de dialogue que nous allons voir est la message Box, elle permet d’afficher un petit message à l’écran. whiptail --title "<titre>" --msgbox "<message>" <height> <width> Pour afficher quelque chose qui ressemble à cela : voici le code source bash Shell #!/bin/bash whiptail --title "Titre Message Box" --msgbox "Utilisation de whiptail pour la creation d'un messageBox. Cliquer sur Ok pour continuer." 10 60 12 #!/bin/bashwhiptail --title "Titre  Message Box" --msgbox "Utilisation de whiptail pour la creation d'un messageBox. Cliquer sur Ok pour continuer." 10 60 2. Une boite de dialogue oui / non La deuxième boite de dialogue que nous allons voir est la yes/no, elle permet d’afficher un message de confirmation avant d’executer une action. whiptail --title "<titre>" --yesno "<text>" <height> <width>   Shell #!/bin/bash if (whiptail --title "Boite de dialogue Oui / Non" --yesno "Voudrais-tu m'épouser ?" 10 60) then echo "C'est le plus beau jour de ma vie" else echo "Nooooooon !!" fi 123456 #!/bin/bashif (whiptail --title "Boite de dialogue Oui / Non" --yesno "Voudrais-tu m'épouser ?" 10 60) then echo "C'est le plus beau jour de ma vie"else echo "Nooooooon !!"fi Si jamais vous pouvez personnalisé les réponses en précisant la valeur du bouton yes et no avec les attributs : --yes-button "valeur du oui" --no-button "valeur non" 3. Input La troisème boîte de dialogue est l’input box, elle permet à l’utilisateur de saisir une information. whiptail --title "<titre>" --inputbox "<texte>" <height> <width> <default-text> Shell #!/bin/bash Name=$(whiptail --title "Input" --inputbox "Quel est ton prénom ?" 10 60 Morgan 3>&1 1>&2 2>&3) exitstatus=$? if [ $exitstatus = 0 ]; then echo "Okay, ton prénom est :" $Name else echo "Tu as annuler... :-(" fi 123456789 #!/bin/bashName=$(whiptail --title "Input" --inputbox "Quel est ton prénom ?" 10 60 Morgan 3>&1 1>&2 2>&3) exitstatus=$?if [ $exitstatus = 0 ]; then    echo "Okay, ton prénom est :" $Nameelse    echo "Tu as annuler... :-("fi  Créer une password Box Comme sont nom l’indique, c’est rès utile lorsqu’on veux que l’utilisateur renseigne un mot de passe Shell whiptail --title...

Read More

Donner les permissions aux fichiers et dossiers – linux

Donner les permissions aux fichiers et dossiers – linux

Bonjour à tous, Aujourd’hui une toute petite astuce pour donnée les « bonnes » permissions pour les fichiers et dossiers. Souvent, les gens ne donnent pas les bonnes permissions pour les fichiers/dossiers. En effet, ce n’est pas très sûr de donnée les droits d’exécutions sur les fichiers. Habituellement, pour un site web, on donne le chmod 644 pour les fichiers et 755 pour les répertoires.   Shell # Donne le chmod 644 pour tout les fichiers dans le dossier "YOUR_DIR" find YOUR_DIR/ -type f -print0 | xargs -0 chmod 644 # Donne le chmod 755 pour tous les dossiers dans le répertoire YOUR_DIR find YOUR_DIR/ -type d -print0 | xargs -0 chmod 755 12345 # Donne le chmod 644 pour tout les fichiers dans le dossier "YOUR_DIR"find YOUR_DIR/ -type f -print0 | xargs -0 chmod 644     # Donne le chmod 755 pour tous les dossiers dans le répertoire YOUR_DIR find YOUR_DIR/ -type d -print0 | xargs -0 chmod 755...

Read More

Plus de son après une mise à jour ? [Ubuntu]

Plus de son après une mise à jour ? [Ubuntu]

Bonjour à tous, Aujourd’hui sur irc, j’ai eu quelqu’un qui s’est plaint de ne plus avoir de son avec firefox sur sont ubuntu 14.04 LTS après une mise à jour. Alors, c’était dû au fait que les drivers de la carte son ne s’était pas installé correctement. Rien de bien méchant, cette petite ligne de commande résout le problème : sudo apt-get --reinstall install build-essential linux-headers-`uname...

Read More

Comment faire pour que « apt-get upgrade » utilise moins de ressources ?

Comment faire pour que « apt-get upgrade » utilise moins de ressources ?

Bonjour à tous, Aujourd’hui je vous présente une petite astuce toute simple pour faire en sorte que la mise à jour consomme moins de ressources sous linux. Dans certain cas il peut s’avérer utile que la mise à jour consomme moins de ressource (pour les petites configuration). Par contre la procédure prendra plus de temps. Sur linux, il existe deux commandes très utile qui sont : nice :  permet de changer le niveau de priorité d’un processus déterminé. La priorité la plus élevée correspond à un niveau de -20, tandis que la plus basse correspond à +19 ionice : même chose que nice mais pour la vitesse de lecture/écriture sur le disque. ionice va de 0 à 7, où 0 est la valeur de priorité la plus élevé et 7 la plus faible Pour nice et ionice le principe d’utilisation est le même : nice -n <niceness> <command> niceness étant la valeur de la priorité Pour mettre à jour la priorité d’un processus, il existe la commande renice renice -n <niceness> -p <pid>   Pour lancer la mise à jour avec une faible priorité : Pour les système GNU/Linux basé sur debian : sudo nice -n 19 apt-get upgrade on peut facilement combiner nice et ionice : sudo ionice -n 7 nice -n 19 apt-get upgrade Pour les systèmes basé sous centOS / Fedora sudo ionice -n 7 nice -n 19 yum...

Read More

Récupérer les paroles d’une musique (.mp3, .m4a) et l’enregistrer sous Linux

Récupérer les paroles d’une musique (.mp3, .m4a) et l’enregistrer sous Linux

Bonjour à tous, aujourd’hui nous allons voir un petit script bash bien sympathique qui permet de récupérer tous les fichiers musicaux (.mp3, .m4a ou d’autres – il suffit de les ajouter dans le script-) et d’y ajouter les paroles des chansons. Tout d’abord, nous devons nous assuré de disposer de wget et eyed3 Si vous êtes sur une distribution basé sur debian (ubuntu, elementary os, linux mint, etc …) sudo apt-get install wget eyed3 Si vous êtes sur une distribution basé sur centOS / fedora : yum install python-eyed3 wget   Qu’est-ce que eyed3 ? eyed3 est un petit programme python qui permet de jouer les méta-data ID3 . Elle sont surtout utilisé avec les fichiers .mp3, elle peuvent contenir le nom de l’artiste, de l’album, de la musique et aussi les paroles ! L’idée va être d’extraire de ces méta-datas le nom de l’artiste ainsi que le nom de la chanson pour récupérer les paroles et les stockés dans ces méta-data. Voici un petit script shell qui permet de faire cela automatiquement. Placer-le dans un répertoire (par exemple /home/user/musique) et il se chargera de scruter toutes les musiques des répertoires et sous répertoire pour y mettre à jour les méta-data.   Shell #!/bin/bash _TPL='http://makeitpersonal.co/lyrics?artist=<artist>&title=<title>' _SRY="Desole, il n'y a pas encore de parole pour cette chanson." [ "$1" ] && _PATH="$1" || _PATH=$PWD cd $_PATH for _FILE in {*.mp3,*.m4a}; do if [[ -r $_FILE ]]; then _SONG=$(eyeD3 --no-color "$_FILE" | grep title) _ARTIST="${_SONG#*"artist: "}" _TITLE="${_SONG%"artist: "*}" _TITLE="${_TITLE#"title: "}" echo -n "$_ARTIST - $_TITLE" _ARTIST="${_ARTIST// /+}" _TITLE="${_TITLE// /+}" _URL="${_TPL//"<artist>"/$_ARTIST}" _URL="${_URL//"<title>"/$_TITLE}" _LYRICS=$(wget -qO- $_URL) if [ "$_LYRICS" != "$_SRY" ]; then eyeD3 --lyrics=eng:Lyrics:"$_LYRICS" "$_FILE" 1>/dev/null else echo "pas de paroles trouvé... next!" fi fi done cd $OLDPWD 1234567891011121314151617181920212223242526272829303132333435 #!/bin/bash _TPL='http://makeitpersonal.co/lyrics?artist=<artist>&title=<title>'_SRY="Desole, il n'y a pas encore de parole pour cette chanson." [ "$1" ] && _PATH="$1" || _PATH=$PWD cd $_PATH for _FILE in {*.mp3,*.m4a}; do    if [[ -r $_FILE ]]; then        _SONG=$(eyeD3 --no-color "$_FILE" | grep title)         _ARTIST="${_SONG#*"artist: "}"        _TITLE="${_SONG%"artist: "*}"        _TITLE="${_TITLE#"title: "}"         echo -n "$_ARTIST - $_TITLE"         _ARTIST="${_ARTIST// /+}"        _TITLE="${_TITLE// /+}"        _URL="${_TPL//"<artist>"/$_ARTIST}"        _URL="${_URL//"<title>"/$_TITLE}"         _LYRICS=$(wget -qO- $_URL)         if [ "$_LYRICS" != "$_SRY" ]; then            eyeD3 --lyrics=eng:Lyrics:"$_LYRICS" "$_FILE" 1>/dev/null        else            echo "pas de paroles trouvé... next!"        fi    fidone cd $OLDPWD Merci à Cyprian Guerra pour le...

Read More

Différence entre ‘+’ et ‘\;’ à la fin de la commande -exec

Différence entre ‘+’ et ‘\;’ à la fin de la commande -exec

Bonjour à tous, j’écris juste un petit billet car je me suis demandé quelle était la différence entre l’utilisation du + et \; à la fin de -exec lors de l’utilisation de la commande find ? -exec ... \;  lance une commande après l’autre. Si vous avez trois fichiers, la ligne de commande va être exécuter trois fois. -exec ... {} +  est utilisé pour les commandes qui peuvent prendre en argument plus d’un fichier à la fois (exemple : cat, stat, ls). Le fichier trouvé par find sont chaîné ensemble comme avec la commande xargs . Voici un petit comparatif entre les deux commandes sur 10 000 fichiers : Shell morgan@morgan-Studio-1749$ cd /tmp morgan@morgan-Studio-1749:/tmp$ mkdir testdir morgan@morgan-Studio-1749:/tmp$ touch testdir/{0000..9999} morgan@morgan-Studio-1749:/tmp$ time find testdir/ -type f -exec cat {} \; real 0m10.779s user 0m0.691s sys 0m9.908s morgan@morgan-Studio-1749:/tmp$ time find testdir/ -type f -exec cat {} + real 0m0.055s user 0m0.018s sys 0m0.037s morgan@morgan-Studio-1749:/tmp$ 12345678910111213141516 morgan@morgan-Studio-1749$ cd /tmpmorgan@morgan-Studio-1749:/tmp$ mkdir testdirmorgan@morgan-Studio-1749:/tmp$ touch testdir/{0000..9999} morgan@morgan-Studio-1749:/tmp$ time find testdir/ -type f -exec cat {} \; real 0m10.779suser 0m0.691ssys 0m9.908s morgan@morgan-Studio-1749:/tmp$ time find testdir/ -type f -exec cat {} + real 0m0.055suser 0m0.018ssys 0m0.037smorgan@morgan-Studio-1749:/tmp$ On peux voir que l’utilisation du + (opérateur de concaténation) améliore grandement la vitesse d’exécution (attention, cela ne fonctionne que sur les commandes qui accepte plusieurs fichiers en paramètres). Qu’est-ce qu’il se passe vraiment ? Avec \; , la commande exécuté seras : cat 1; cat 2; cat 3 . Avec + , la commande exécuté seras : cat 1 2 3...

Read More

Empêcher un fichier d’être modifié ou supprimé

Empêcher un fichier d’être modifié ou supprimé

Il est possible d’empêcher n’importe quel fichier d’être modifié, supprimé ou même renommé, et ce, par par n’importe quel utilisateur, root y compris. Comment faire ? Pour faire cela il faut utiliser la commande : chattr qui modifie les attributs d’un fichier. L’option qui nous intéresse est l’option « i » : « +i » pour activer la protection et « -i » pour désactiver cette protection . Le « i » signifie immuable (ou immutable en anglais) qui veux dire « ne peuvent pas être modifiés ». chattr peut aussi protéger des répertoires entiers. chattr doit être utilisé avec les privilèges root. Protéger un fichier : sudo chattr +i <fichier ou repertoire> Retirer la protection d’un fichier protéger sudo chattr -i <fichier ou repertoire> Si vous appliquez ces commandes sur un répertoire, vous pouvez utilisez l’option « -R » pour exécutez la commande récursivement. Exemples : créons un fichier quelconque : echo "Ceci est un fichier tres important." >important.txt avec les droits root, utiliser chattr : sudo chattr +i important.txt Est-ce que l’utilisateur root peut modifier le fichier ? Est-ce que je peux renommé le fichier avec les droits super utilisateurs ? Est-ce que je peux le supprimé ? Si vous voulez pouvoir effectuer l’une de ces actions il faudra donc enlever la protection du fichier avec l’attribut « -i » comme nous l’avons-vu précédemment : sudo chattr -i important.txt   traduction de l’article suivant :...

Read More

Comment utiliser « cat » ou « less » sur un fichier libreoffice .odt ?

Comment utiliser « cat » ou « less » sur un fichier libreoffice .odt ?

Bonjour à tous, aujourd’hui je vais vous présenter un petit logiciel bien sympas, il va vous permettre de lire les fichiers libreoffice en console. C’est une petite astuce qui s’avérer très utile lorsqu’on veux voir le contenue d’un fichier .odt en mode console (pour une application avec python / php / whatever). La soltuion est d’utiliser « odt2txt ». Cette ligne de commande est fournis dans deux packages différent. Le premier est nomé odt2txt que vous pouvez installé : sudo apt-get install odt2txt  et par le package unoconv (qui offre un plus large éventails de choix pour les formats libreoffice), que vous pouvez installé comme ceci : sudo apt-get install unoconv Si vous avez les deux, vous pouvez choisir lequel utiliser en utilisant le système de commande alternartive : sudo update-alternatives --config odt2txt Si vous utilisez « odt2txt » fournis par le paquet « odt2txt », vous avez juste à utiliser : odt2txt file.odt Si vous utilisez celui fournir par le package : « unoconv« , vous devez l’utiliser comme ceci : odt2txt --stdout file.odt Utiliser le pipe pour utiliser less : odt2txt file.odt | less NB : si vous n’utiliser pas l’option --stdout, unoconv va écrire le résultat dans un fichier appelé « file.txt ».  ...

Read More

Avoir deux claviers dans deux langues différentes

Avoir deux claviers dans deux langues différentes

Comment avoir deux claviers dans deux langues différentes ?   Vous avez deux claviers dans des langues différentes ? Par exemple un querty et un azerty sans avoir à spécifier à chaque fois. 1. Il vous suffit d’utiliser xinput pour lister vos clavier : Shell xinput -list | grep key 1 xinput -list | grep key Exemple :   Shell $ xinput -list | grep key ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Power Button id=8 [slave keyboard (3)] ↳ Sleep Button id=9 [slave keyboard (3)] ↳ 2.4GHz 2way RF Receiver id=10 [slave keyboard (3)] ↳ HP Webcam id=12 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=13 [slave keyboard (3)] ↳ HP WMI hotkeys id=15 [slave keyboard (3)] ↳ USB Keyboard id=16 [slave keyboard (3)] ↳ USB Keyboard id=17 [slave keyboard (3)] 12345678910111213 $ xinput -list | grep key⎣ Virtual core keyboard                         id=3    [master keyboard (2)]    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]    ↳ Power Button                              id=6    [slave  keyboard (3)]    ↳ Video Bus                                 id=7    [slave  keyboard (3)]    ↳ Power Button                              id=8    [slave  keyboard (3)]    ↳ Sleep Button                              id=9    [slave  keyboard (3)]    ↳ 2.4GHz 2way RF Receiver                   id=10   [slave  keyboard (3)]    ↳ HP Webcam                                 id=12   [slave  keyboard (3)]    ↳ AT Translated Set 2 keyboard              id=13   [slave  keyboard (3)]    ↳ HP WMI hotkeys                            id=15   [slave  keyboard (3)]    ↳   USB Keyboard                            id=16   [slave  keyboard (3)]    ↳   USB Keyboard                            id=17   [slave  keyboard (3)]   Puis utilisez setxkbmap pour setter une langue par defaut à ce clavier Shell setxkbmap -device <key_ID> -layout <layout_name> 1 setxkbmap -device <key_ID> -layout <layout_name> Exemple : setxkbmap -device 3 -layout fr #clavier principal en françaist setxkbmap -device 10 -layout us #Le clavier avec id=10 en anglais (US) setxkbmap -device 16 -layout ru #Le clavier avec id=16 en russe 123 setxkbmap -device 3 -layout fr    #clavier principal en françaistsetxkbmap -device 10 -layout us   #Le clavier avec id=10  en anglais (US)setxkbmap -device 16 -layout ru   #Le clavier avec id=16  en russe  ...

Read More