Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1576 Le 07/05/2012, à 14:26

nordinatueur

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

>>Vous pouvez vous battre ailleurs ?
J'aime beaucoup suivre ce fil.

titan77 a écrit :

bon aller je repond plus et je me tate pour me désinscrire.

Non mais ça va pas ? On ne se désinscrit pas pour ça enfin... Tu ne changes pas de prénom et nom à chaque fois que tu t'embrouilles avec quelqu'un.
Il faut vous tempérer. C'est facile de mal interpréter les propos d'autrui sur un forum !



>>J'en reviens au sujet initial.
Je ne sais plus où je me suis inspiré (j'ai tout copié) de ça :
Ça sert à copier/couper/coller des fichiers et dossiers comme on le fait dans un gestionnaire de fichiers graphique.
On lance copier/couper, on va dans le dossier sélectionné et on lance coller.

copier(){ while (( $# )); do cp -a "${1}" "/tmp/copie.${1}"; shift; done; }
couper(){ while (( $# )); do mv -a "${1}" "/tmp/copie.${1}"; shift; done; }
alias coller="ls -d /tmp/copie.* | sed 's,/tmp/copie.,,' | xargs -I % mv /tmp/copie.% ./%";

Bien sûr c'est l'ébauche et il faudrait améliorer encore !
Par exemple faire une fonction avec une boucle pour coller, car en l'état actuel on ne peut pas rajouter l'option -i à mv qui serait bien pratique.
Ensuite, je pense qu'il serait mieux de ne créer qu'un simple fichier avec la liste des fichiers à copier/coller pour éviter de faire deux écritures disque lorsqu'une suffit !
À bientôt les Zouzous !

Dernière modification par nordinatueur (Le 07/05/2012, à 14:29)


nordinatueur@jabber.fr Linux User #508094
Pour une meilleure coopération, utilisez des liens relatifs sur le forum !

Hors ligne

#1577 Le 07/05/2012, à 23:02

Nanoseb

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Très bonne idée ce script
je me suis permis de modifier pour ne pas avoir a faire deux cp :

copier(){ while (( $# )); do echo "$(pwd)/${1}" >> /tmp/copie; shift; done; }
couper(){ while (( $# )); do echo "$(pwd)/${1}" >> /tmp/couper; shift; done; }
coller () {

if [ -f "/tmp/copie" ]
then
    cat /tmp/copie | while read i
    do
        cp -a "$i" $(pwd)
    done
    rm /tmp/copie
fi

if [ -f "/tmp/couper" ]
then
    cat /tmp/couper | while read i
    do
        mv -i "$i" $(pwd)
    done
    rm /tmp/couper
fi
}

Voilà si tu vois des améliorations je suis preneur.

Dernière modification par Nanoseb (Le 07/05/2012, à 23:08)

Hors ligne

#1578 Le 07/05/2012, à 23:54

Bousky

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

titan77 a écrit :

sur les autre forum qu'ils racontent que chez ubuntu sa prend de haut,j'en ais confirmation.

C'est toi qui a déclenché les attaques personnelles, n'inverse pas les rôles.

aufaite t'ai entrain de dire qu'un intervenant ici est un gros gland,puisque c'est ici que j'avais lu le truc sur les tabulation.

Encore une fois, tu ne lis pas ce que j'écris : il a raison dans le cas général, mais ça ne s'applique pas au python. Ceux qui ont décidé qu'il fallait mettre quatre espaces sont des idiots, mais c'est maintenant la règle et vu les spécificités syntaxiques du python il est dangereux de ne pas la suivre.


@Nanoseb :
Tes fonctions « copier » et « coller » plantent si on leur donne un chemin absolu. Certes ce n'est pas le but, mais on sait jamais (on pourrait glisser un chemin absolut au milieu de plusieurs chemins relatifs). Il faudrait une fonction de purge. C'est mal d'utiliser un nom de fichier en dur dans /tmp, ça risque de créer des conflits (autre utilisateur en parallèle, autre programme utilisant le même nom…). Il vaut mieux demander au système de générer son propre nom de fichier. « cat … | … » c'est mal.

[[ "$CC_COPIE" && -w "$CC_COPIE" && -r "$CC_COPIE" ]] || export CC_COPIE=$(mktemp copie.XXXXXXXXXX)
[[ "$CC_COUPE" && -w "$CC_COUPE" && -r "$CC_COUPE" ]] || export CC_COUPE=$(mktemp coupe.XXXXXXXXXX)

function copier {
        while [ "$1" ] ; do
                if [ "${1:0:1}" = / ] ; then
                        echo "$1" >> "$CC_COPIE"
                then
                        echo "$PWD/$1" >> "$CC_COPIE"
                fi
                shift
        done
}

function couper {
        while [ "$1" ] ; do
                if [ "${1:0:1}" = / ] ; then
                        echo "$1" >> "$CC_COUPE"
                then
                        echo "$pwd/$1" >> "$CC_COUPE"
                fi
                shift
        done
}

function coller {
        while read i ; do
                cp -a "$i" "$PWD"
        done < "$CC_COPIE"
        echo -n > "$CC_COPIE"
        while read i ; do
                cp -a "$i" "$PWD"
        done < "$CC_COUPE"
        echo -n > "$CC_COUPE"
}

function purge { echo -n > "$CC_COPIE" ; echo -n > "$CC_COUPE" ; }

Bon après, j'ai pas testé. Et je ne sais pas ce qui est plus sûr, « $PWD » ou « $(pwd) ». Si tu te déco-reco souvent, il risque d'y avoir une légère accumulation de fichiers (mais ils sont supprimés au reboot). Si ça te gène, tu peux ajouter ça dans le .bash_logout (auquel cas il est peut-être préférable de supprimer les tests devant les créations de fichiers temporaires) :

rm "$CC_COPIE" "$CC_COUPE"

Il est aussi possible (et peut-être plus sûr) de mettre les créations de fichiers dans les fonctions coupe et colle mais dans ce cas il ne faut pas enlever les tests.


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#1579 Le 08/05/2012, à 13:25

nordinatueur

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

@Bousky
C'est une bonne idée, mais après avoir testé, ça n'a pas le résultat escompté chez moi !
Par exemple, il n'y a un fichier par instance de terminal et j'aimerais copier dans un terminal et coller dans un autre.
À moins de le mettre dans le .profile, mais je ne suis pas sûr que ça change quelque chose !

À la limite, on peut se proposer ce code :

CC_COPIE="/tmp/copie."$(md5sum <<< "${USER}@${HOSTNAME}"); CC_COPIE=${CC_COPIE%  -}

Et ensuite, j'ai amélioré un peu :
Je préfère largement while (( $# )) à while [ "${1}" ] car s'il y a une ligne vide tu vas sortir de la boucle sans regarder le reste. La fonction coller vérifie que l'on n'essaye pas de copier un fichier deux fois. C'est surtout utile pour couper mais puisque j'utilise l'option -i c'est aussi très préférable pour copier.

function copier {
    while (( $# )); do
        case ${1:0:1} in
        '/')
            echo "${1}" >> "${CC_COPIE}";;
        '~')
            echo "${HOME}/${1}" >> "${CC_COPIE}";;
        *)  
            echo "${PWD}/${1}" >> "${CC_COPIE}";;
        esac;
        shift;
    done;
}

function coller {
    touch ${CC_COPIE} ${CC_COUPE};
    sort -u ${CC_COPIE} | while read i ; do
        cp -ai "${i}" "${PWD}";
    done;
    > "${CC_COPIE}";
    sort -u ${CC_COUPE} | while read i ; do
        mv -ai "${i}" "${PWD}";
    done;
    > "${CC_COUPE}";
}

Dernière modification par nordinatueur (Le 23/05/2012, à 13:08)


nordinatueur@jabber.fr Linux User #508094
Pour une meilleure coopération, utilisez des liens relatifs sur le forum !

Hors ligne

#1580 Le 08/05/2012, à 13:42

Neko62

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Je vus remercie pour votre aide,

une fois les corrections apportées :

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Un app-indicator très simple qui ouvre des post-it placés dans un dossier
# créé par Pseudomino à partir de indicator-places le 18/12/2011
#

import os
import gtk
import gio
import signal
import subprocess
import appindicator
import urllib

APP_NAME = 'indicator-post-it'
APP_VERSION = '0.1'

class IndicatorPostit:

    def __init__(self):
        self.ind = appindicator.Indicator("post-it", "tomboy", appindicator.CATEGORY_APPLICATION_STATUS)
        self.ind.set_status(appindicator.STATUS_ACTIVE)        

        self.update_menu()

    def create_menu_item(self, label, icon_name):
        image = gtk.Image()
        image.set_from_icon_name(icon_name, 24)

        item = gtk.ImageMenuItem()
        item.set_label(label)
        item.set_image(image)
        item.set_always_show_image(True)
        return item
    
   
    # Méthode pour créer un menu
    def update_menu(self, widget = None, data = None):
      
        # Créer le menu
        menu = gtk.Menu()
        self.ind.set_menu(menu)

        # Lister les post-it
    listing = os.listdir('/home/nicolas/Post-it/');
    for path in listing:
            item = self.create_menu_item(path, "tomboy")
            item.connect("activate", self.on_postit_click, path)
            menu.append(item)

    # Afficher le menu
    menu.show_all()


    # Ouvrir un post-it
    def on_postit_click(self, widget, path):
        subprocess.Popen('gedit ~/Post-it/' + path, shell = True)
      

if __name__ == "__main__":
    # Catch CTRL-C
    signal.signal(signal.SIGINT, lambda signal, frame: gtk.main_quit())

    # Lancer l'indicator
    i = IndicatorPostit()           
    
    # Boucle gtk principale
    gtk.main()

le script lancé me donne comme erreur cette fois ci :

Traceback (most recent call last):
  File "/home/nicolas/.script_perso/Post-it-indicator.py", line 19, in <module>
    class IndicatorPostit:
  File "/home/nicolas/.script_perso/Post-it-indicator.py", line 48, in IndicatorPostit
    item = self.create_menu_item(path, "tomboy")
NameError: name 'self' is not defined

comment définir cette variable ?

Hors ligne

#1581 Le 10/05/2012, à 18:26

Neko62

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

up ! smile

Hors ligne

#1582 Le 11/05/2012, à 01:59

Bousky

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Cette ligne de code n'est pas dans une méthode (il n'y a donc pas de « self »). C'est normal ?

Au fait, quand tu poste du code avec une erreur mentionnant une ligne, au lieu de poster le fichier, poste le résultat de la commande « nl -ba fichier » ou « cat -n fichier ».


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#1583 Le 11/05/2012, à 09:44

Dell-ubuntu

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour à tous,
J'ai un script à proposer, qui n'est pas de moi, je l'ai trouvé ici : LavrenEncoder

Avec un appareil photo numérique on peut filmer, les vidéos sont en .MOV
Ce format est de bonne qualité mais son transcodage n'est pas aisé : http://forum.ubuntu-fr.org/viewtopic.php?id=889431
LavrenEncoder permet de transcoder ses .MOV en différents formats, en choisissant les dimentions de la vidéo finale, ses bitrates audio et vidéo , etc ...  exactement comme on le désire.

Voici le script LavrenEncoder :

#!/bin/bash
## Script pour DéBlogToi.com
## Créé par Lavren, le 29 décembre 2008.
## Version 0.1

input_file=$1

echo "écrivez le nom de la vidéo de sortie (sans extension) "

read output_file_name

echo "Quel codec vidéo voulez-vous utiliser pour votre nouvelle vidéo ? Choississez en tapant un numéro"

OPTIONS="x264"
select video_codec in $OPTIONS; do
    if [ "$video_codec" = "x264" ]; then
        output_video_codec="libx264"
        echo "OK, x264 pour un encodage H.264"
        echo "Quelle extension voulez-vous utiliser pour votre nouvelle vidéo ? Choississez en tapant un numéro"
        OPTIONS="mov mp4 3gp avi"
        select video_opt in $OPTIONS; do
            if [ "$video_opt" = "mov" ]; then
            output_file_extension="mov"
            echo "OK pour l'extension $audio_opt"
            break
            elif [ "$video_opt" = "mp4" ]; then
            output_file_extension="mp4"
            echo "OK pour l'extension $audio_opt"
            break
            elif [ "$video_opt" = "avi" ]; then
            output_file_extension="avi"
            echo "OK pour l'extension $audio_opt"
            break
            else
            echo "Non valide"
            exit
            fi
        done
        echo "Quel codec audio voulez-vous utiliser pour votre nouvelle vidéo ? Choississez en tapant un numéro"
        OPTIONS="aac mp3 flac"
        select audio_opt in $OPTIONS; do
            if [ "$audio_opt" = "aac" ]; then
            output_file_audiocodec="libfaac"
            echo "OK, le codec $audio_opt pour l'audio"
            break
            elif [ "$audio_opt" = "mp3" ]; then
            output_file_audiocodec="libmp3lame"
            echo "OK, le codec $audio_opt pour l'audio"
            break
            elif [ "$audio_opt" = "flac" ]; then
            output_file_audiocodec="flac"
            echo "OK, le codec $audio_opt pour l'audio"
            break
            else
            echo "Non valide"
            exit
            fi
        done
    break
    else
    echo "Non valide"
    exit
    fi
done

echo "Quelle largeur de vidéo en pixels ? Il est recommandé d'utiliser des multiples de 16 comme 1280, 720, 640, 320"

read output_file_width

echo "Quelle hauteur de vidéo en pixels ? Attention aux proportions de votre vidéo (16:9, 4:3, 3:2 => 1280x720, 1280x1024, 1200x800)"

read output_file_height

echo "Quel taux (bitrate) souhaitez-vous pour votre vidéo, en kbps ? Pour le web, il est recommandé entre 500 et 2000 selon la qualité."

read output_file_bitrate

echo "Quel taux (bitrate) souhaitez-vous pour l'audio ? Exemple : 192 -> qualité CD, 128 -> excellente qualité, 96 -> juste assez bon pour le web"

read output_file_audiorate


## Confirmation

echo "Voici les détails de l'encodage de votre vidéo :"
echo "Nom du fichier : $output_file_name.$output_file_extension"
echo "Largeur : $output_file_width px"
echo "Hauteur : $output_file_height px"
echo "Codec video : $video_codec"
echo "Bitrate video: $output_file_bitrate kbps"
echo "Codec audio : $audio_opt"
echo "Bitrate audio : $output_file_audiorate kbps"

echo "Ces réglages sont-ils corrects ? [o/n]"

read output_file_confirm

if [ $output_file_confirm = 'n' ] || [ $output_file_confirm = 'N' ]
then
    echo "OK, réessayez...."
    exit
else
    echo "Excellent. Votre fichier va maintenant être généré. Cela peut prendre un moment selon la puissance de votre processeur."
fi

# Encodage

ffmpeg -i ${input_file} -vcodec ${output_video_codec} -acodec ${output_file_audiocodec} -ab ${output_file_audiorate}k -vpre hq -b ${output_file_bitrate}k -s ${output_file_width}x${output_file_height} -f ${output_file_extension} ${output_file_name}.${output_file_extension}

echo "Votre fichier a été créé." 

## Appliquer qt-faststart

if [ $output_file_extension = 'mov' ] || [ $output_file_extension = 'mp4' ]
then
    echo "Voulez vous appliquer qt-faststart, pour le streaming ? [o/n]"
    read qt_faststart_permis
    
    if [ $qt_faststart_permis = 'o' ] || [ $qt_faststart_permis = 'O' ]
    then
        mv ${output_file_name}.${output_file_extension} ${output_file_name}_temp.${output_file_extension}
        qt-faststart ${output_file_name}_temp.${output_file_extension} ${output_file_name}.${output_file_extension}

        echo "QuickTime Fast Start a été appliqué sur la vidéo"
        rm ${output_file_name}_temp.${output_file_extension}
        echo "C'est terminé ! Merci d'avoir utilisé LavrenEncoder"
    else
        echo "C'est terminé ! Merci d'avoir utilisé LavrenEncoder"
    fi
else
    echo "C'est terminé ! Merci d'avoir utilisé LavrenEncoder"
fi

Son utilisation est simple.
-1- On clique de droite dessus:  Propriétés/Permissions/"Autoriser l'exécution du fichier comme un programme".
-2- En console cd + chemin oû se trouve le .MOV à transcoder, on glisse le script puis le fichier.MOV dans la console + Entrée

Pour ceux qui ne sauraient pas quel bitrate vidéo choisir, voici la règle de calcul pour les .avi :

il ya une formule pour déterminer le débit maximum "utile" en DivX pour un périphérique.
En règle générale la valeur "bits par pixel" est de  0.22

bitrate = (largeur x hauteur x "bits par pixel" x images par seconde) / 1024

exemples :
(640x480x0.22x30) / 1024 = 1980 kbit / seconde
(480x200x0.22x25) / 1024 = 515 kbps
(480x272x0.22x25) / 1024 = 701 kbps
(320x240x0.22x25) / 1024 = 412 kbps

Comme c'est la seule méthode que j'ai pu trouver pour que mes vidéos finales n'aient pas le son décalé par rapport à l'image, je propose que ce script, que j'ai trouvé fort utile, soit présent dans la documentation.

Voir aussi ce post.

Dernière modification par Dell-ubuntu (Le 26/05/2012, à 21:46)

#1584 Le 14/05/2012, à 18:24

Arcadia

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour à tous,

Après moult recherches (bon O.K., j'ai abandonné après deux heure et demi de recherches) sur plusieurs OS, je n'arrive pas à trouver un programme qui fait ce que je voudrait faire, il me faut donc un script adapté mais j'avoue que ce n'est pas mon dada et que je suis vite limité quand ça devient un tantinet complexe.

Je m'explique:

-> J'ai un dossier dans lequel traine environs 2500 fichiers tous sous la forme "Une chaine de mot - titre.extension" ou "Autre chose - titre.extension"
-> Je voudrais trier ces fichier d'après la chaine de mot d'avant le "-" dans un dossier à ce nom, c'est à dire faire en sorte que tous les fichier commençant, par exemple, par "Une chaine de mot" soit dans un fichier nommé "Une chaine de mot" et les fichier commençant par "autre chose" dans un dossier "autre chose".

C'est peut être pas hyper compliqué mais j'avoue ne pas parvenir à grand chose.

Dans mon esprit il me semble qu'il faille lister les fichier par titre et faire un mkdir puis un mv au fur et à mesure jusqu'à ce qu'un fichier soit épuisé puis rebelotte, mais je vois difficilement comment mettre ça en oeuvre...

Ca vous inspire quelque chose ?

Merci !

Hors ligne

#1585 Le 14/05/2012, à 20:56

Hizoka

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

tres simple en effet...

while read
do
  a="${REPLY%-*}"
  [[ ! -d "${a}" ]] && mkdir "${a}"
  mv "${REPLY}"  "${a}"
done < <(ls "${PWD}")

alors la, ca fait comme tu as dit.
Pas de changement de nom des fichiers
j'ai coupé du - jusqu'à la fin, mais si il y a un espace avant le -, il est pris en compte (si il y a toujours un espace avant le -, utiliser : a="${REPLY% -*}"

et voila....


Ex :

ls -1
pipo - fichier 1.tct
pipo - papa.cfg
pipo - plue.txt
popo - fichier 1.tct
popo - papa.cfg
popo - plue.txt

while read
do
a="${REPLY% -*}"
[[ ! -d "${a}" ]] && mkdir "${a}"
mv "${REPLY}"  "${a}"
done < <(ls "${PWD}")


ls -R
.:
pipo  popo

./pipo:
pipo - fichier 1.tct  pipo - papa.cfg  pipo - plue.txt

./popo:
popo - fichier 1.tct  popo - papa.cfg  popo - plue.txt

Dernière modification par Hizoka (Le 14/05/2012, à 21:01)

Hors ligne

#1586 Le 15/05/2012, à 11:20

Arcadia

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Hizoka a écrit :

tres simple en effet...

while read
do
  a="${REPLY%-*}"
  [[ ! -d "${a}" ]] && mkdir "${a}"
  mv "${REPLY}"  "${a}"
done < <(ls "${PWD}")

alors la, ca fait comme tu as dit.
Pas de changement de nom des fichiers
j'ai coupé du - jusqu'à la fin, mais si il y a un espace avant le -, il est pris en compte (si il y a toujours un espace avant le -, utiliser : a="${REPLY% -*}"

et voila....

Merci, J'ai privilégié la seconde solution (a="${REPLY% -*}") et cela marche très bien ! smile

Hors ligne

#1587 Le 15/05/2012, à 17:37

Hizoka

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

pour info, si tu veux que ton fichier "nom commum - nom fichier" soit deplacé dans "nom comun" et s'appelle "nom fichier".
il te suffit de modifier cette ligne :

mv "${REPLY}"  "${a}"

en

mv "${REPLY}"  "${a}/${REPLY#*- }"

mais dans tous les cas, les noms de tes fichiers ne doivent contenir qu'un seul tiret -

Dernière modification par Hizoka (Le 15/05/2012, à 17:38)

Hors ligne

#1588 Le 17/05/2012, à 05:38

nordinatueur

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

@Arcadia et @Hizoka,
metamorphose, qui n'est pas dans les dépôts, permet de renommer les fichiers avec un gui très réussi. En particulier, si le nom final contient des slash /, alors metamorphose créera les dossiers qu'il faut pour que ça fonctionne !
Edit : http://file-folder-ren.sourceforge.net/

Aussi essayez :

echo ${REPLY/-/\/} # remplace le premier «-» par «/»
echo ${REPLY//-/\/} # remplace tous les «-» par «/»

@communauté :
Petit script pour changer la luminosité dans Precise :
(Je ne sais pas comment ça marchait dans Oneiric car j'ai sauté une distro mais avant ce n'était pas comme ça.)

#!/bin/bash 
# Créé par Nordinatueur

#Définit si le script se relance automatiquement en root ou pas. (true=vrai, false=faux)
relancerAutoRoot=true;

if [[ $(whoami) != "root" ]]; then
    if ${relancerAutoRoot}; then
        echo "sudo ${0##*/} $@" && sudo ${0} $@ ;
    else
        echo "Il faut être root pour lancer ce script.";
    fi;
    exit;
else
    #Fichier de luminosité
    BN="/sys/class/backlight/acpi_video0/brightness";
    maxB=$(cat /sys/class/backlight/acpi_video0/max_brightness);
    fin() { echo "${1}"; exit; } 

    Usage()
    {
        cat<<-EOF
            Usage :
            ${0##*/} <option>
            -h    Affiche cette aide
             N    Définit la luminosité à N. (N est compris entre 0 et ${maxB})
            -N    Enlève N à la luminosité courante. (si possible)
            +N    Ajoute N à la luminosité courante. (si possible)
            +/-    Ajoute/Enlève 1 à la luminosité courante. (si possible)
            min/max    Met la luminosité au min/max.
EOF
        exit;
    }

    case ${1} in
    -h|--help)
        Usage;;
    -path)
        echo ${0};
        exit;;
    [0-9])
        b=${1}; [[ ${b} -ge ${maxB} ]] && b=${maxB};
        echo ${b} > ${BN};;
    +[0-9]|+)
        b=$(cat ${BN}); [[ ${b} -ge ${maxB} ]] && fin "Luminosité maximale...";
        s=${1#+}; [[ ${s} == "" ]] && s=1;
        s=$((b+s));
        [[ ${s} -gt ${maxB} ]] && s=${maxB};
        echo ${s} > ${BN};;
    -[0-9]|-)
        b=$(cat ${BN}); [[ ${b} -le 0 ]] && fin "Luminosité minimale..." ;
        s=${1#-}; [[ ${s} == "" ]] && s=1;
        s=$((b-s));
        [[ ${s} -lt 0 ]] && s=0;
        echo ${s} > ${BN};;
    min)
        b=$(cat ${BN}); [[ ${b} -eq 0 ]] && fin "Luminosité minimale..." ;
        echo 0 > ${BN};;
    max)
        b=$(cat ${BN}); [[ ${b} -ge ${maxB} ]] && fin "Luminosité maximale...";
        echo ${maxB} > ${BN};;
    *)
        fin "Argument invalide";;
    esac;

    b=$(cat ${BN});
    echo "Luminosité ${b}/${maxB}...";
fi;

Astuces :

  • Pour que le script se relance avec sudo automatiquement et vous demande votre mot de passe, il suffit de remplacer à la ligne 5 « relancerAutoRoot=true; » par « relancerAutoRoot=false; »

  • Et pour qu'il ne demande plus le mot de passe : ATTENTION***

    1. Tout d'abord mettre le script dans un endroit où vous n'avez pas le droit de le modifier. Par exemple /usr/local/bin, ou /opt. Le permier est très bien car il est dans le PATH en général.

    2. Éditer /etc/sudoers :

      sudo visudo
    3. Ajouter la ligne :

      %users localhost = NOPASSWD: /usr/local/bin/setBrightness

***ATTENTION !
Si vous mettez cette ligne dans le sudoers il faut absolument que le fichier (votre script) ne soit pas éditable sans les droits administrateur !
Dans le cas contraire n'importe quelle commande pourrait être insérée dans votre script et exécutée avec les droits administrateurs sans demande de mot de passe !
Ici j'ai mis mon script dans /usr/local/bin, donc pour le modifier il faut être root ou avoir ses droits sur le dossier !


Edit: (modification du script et du chemin /usr/local/bin)

Dernière modification par nordinatueur (Le 04/06/2012, à 16:20)


nordinatueur@jabber.fr Linux User #508094
Pour une meilleure coopération, utilisez des liens relatifs sur le forum !

Hors ligne

#1589 Le 17/05/2012, à 05:45

Bousky

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

nordinatueur a écrit :
#!/bin/bash
# Créé par Nordinatueur
if [[ $(whoami) != "root" ]]; then
    echo "Vous devez avoir les droits d'administeur pour effectuer cette action...";
    #sudo ${0} $@ ;
else
    BN="/sys/class/backlight/acpi_video0/brightness";
    fin() { echo "${1}"; exit; } 

    case ${1} in
    -path)
        echo ${0};
        exit;;
    [0-7])
        b=${1};
        echo ${b} > ${BN};;
    +[0-7]|+)
        b=$(cat ${BN}); [[ ${b} -eq 7 ]] && fin "Luminosité maximale...";
        s=${1#+}; [[ ${s} == "" ]] && s=1;
        b=$((b+s));
        [[ ${b} -gt 7 ]] && b=7;
        echo ${b} > ${BN};;
    -[0-7]|-)
        b=$(cat ${BN}); [[ ${b} -eq 0 ]] && fin "Luminosité minimale..." ;
        s=${1#-}; [[ ${s} == "" ]] && s=1;
        b=$((b-s));
        [[ ${b} -lt 0 ]] && b=0;
        echo ${b} > ${BN};;
    *)
        fin "Argument invalide";;
    esac;

    echo "Luminosité ${b}/7...";
fi;

C'est marrant tous ces « ; », on dirait du C tongue

Pour ce qui est de mettre des scripts personnels dans le path, on utilise traditionnellement « /usr/local/bin ». Les autres dossiers sont plutôt réservés aux installations automatiques.


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#1590 Le 17/05/2012, à 06:04

nordinatueur

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Merci j'en tiens compte !
Et oui je garde une syntaxe la plus propre possible pour ne pas perdre les bonnes habitudes !

Edit :
@Dell-ubuntu
Merci ! J'avais quelques MOV qui trainaient et j'ai jamais eu le courage de chercher pour ça puisque totem les gérait (bien que difficilement et aléatoirement...) C'est pas faute de m'être farci du mencoder et sa doc à la pelle à une époque !

Dernière modification par nordinatueur (Le 17/05/2012, à 06:15)


nordinatueur@jabber.fr Linux User #508094
Pour une meilleure coopération, utilisez des liens relatifs sur le forum !

Hors ligne

#1591 Le 17/05/2012, à 15:56

TraGiKomiK

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour,

@nordinatueur: J'obtiens ces erreurs en executant ton script:

./luminosite.sh: ligne 50: avertissement : « here-document » à la ligne 12 délimité par la fin du fichier (au lieu de « EOF »)
./luminosite.sh: ligne 51: Erreur de syntaxe : fin de fichier prématurée

Merci de mettre [RESOLU] dans le titre de votre post une fois le  probleme reglé!

GNU/Linux -> \o/

Hors ligne

#1592 Le 17/05/2012, à 18:01

twocats

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Ça devrait aller mieux comme ça :

#!/usr/bin/env bash 
# Créé par Nordinatueur
if [[ $(whoami) != "root" ]]
then
    #sudo ${0} $@
    exit
fi
    BN="/sys/class/backlight/acpi_video0/brightness";

    Usage()
    {
echo "
            Usage :
            ${0##*/} <option>
            -h    Affiche cette aide
             N    Définit la luminosité à N. (N est compris entre 0 et 7)
            -N    Enlève N à la luminosité courante. (si possible)
            +N    Ajoute N à la luminosité courante. (si possible)
            +/-    Ajoute/Enlève 1 à la luminosité courante. (si possible)"
    }

    case ${1} in
    -h|--help)
        Usage;exit ;;
    -path)
        echo ${0}
        exit ;;
    [0-7])
        b=${1}
        echo ${b} > ${BN} ;;
    +[0-7]|+)
        b=$(cat ${BN}); [[ ${b} -eq 7 ]] && fin "Luminosité maximale..."
        s=${1#+}; [[ ${s} == "" ]] && s=1
        b=$((b+s))
        [[ ${b} -gt 7 ]] && b=7
        echo ${b} > ${BN} ;;
    -[0-7]|-)
        b=$(cat ${BN}); [[ ${b} -eq 0 ]] && fin "Luminosité minimale..."
        s=${1#-}; [[ ${s} == "" ]] && s=1
        b=$((b-s))
        [[ ${b} -lt 0 ]] && b=0
        echo ${b} > ${BN} ;;
    *)
        echo "${1} Argument invalide"; exit ;;

    esac

    echo "Luminosité ${b}/7..."

Propre..?


La réponse est 42

Hors ligne

#1593 Le 21/05/2012, à 13:34

TraGiKomiK

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

merci twocats pour la correction wink

@nordinatueur: tres utile et simple d'utilisation ton script, adopré wink


Merci de mettre [RESOLU] dans le titre de votre post une fois le  probleme reglé!

GNU/Linux -> \o/

Hors ligne

#1594 Le 22/05/2012, à 05:22

pingouinux

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour,

TraGiKomik #1591 a écrit :

@nordinatueur: J'obtiens ces erreurs en executant ton script:

./luminosite.sh: ligne 50: avertissement : « here-document » à la ligne 12 délimité par la fin du fichier (au lieu de « EOF »)
./luminosite.sh: ligne 51: Erreur de syntaxe : fin de fichier prématurée

Explication :

cat<<-EOF permet d'indenter les lignes suivantes avec des tabulations. Un copier-coller à la souris du script de nordinateur #1588 a remplacé les tabulations par des espaces, et ça ne fonctionne plus.

Voici un extrait de man bash, rubrique Here Documents :

       If the redirection operator is <<-, then all leading tab characters are
       stripped from input lines and  the  line  containing  delimiter.

Hors ligne

#1595 Le 22/05/2012, à 11:31

nordinatueur

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

pingouinux a écrit :

Explication :

cat<<-EOF permet d'indenter les lignes suivantes avec des tabulations. Un copier-coller à la souris du script de nordinateur #1588 a remplacé les tabulations par des espaces, et ça ne fonctionne plus.

Voici un extrait de man bash, rubrique Here Documents :

       If the redirection operator is <<-, then all leading tab characters are
       stripped from input lines and  the  line  containing  delimiter.

J'adore ce forum !

@twocats, merci, ça fonctionnera mieux comme ça pour les transferts par copier/coller.
Pour mon utilisation personnelle je préfère quand même cat.

@pingouinux, merci beaucoup pour la précision, l'explication claire avec un extrait du man pour appui !! Je crois que sur le forum je n'aurais pas vu l'erreur. D'autant qu'elle ne se produisait pas avant puisque je prenais l'habitude de mettre le EOF en début de ligne, sans tabulation !

@TraGiKomiK, partager sur ce forum c'est bien plus que du partage ! Ça nous revient toujours en mieux !
C'est pour ça je pense que le libre et ubuntu en particulier n'est pas prêt de disparaître quelles que soient les grandes puissances monopolistes qui émergeront... Vive le libre !

TraGiKomiK a écrit :

adopré

Entre adopté et adoré ?

Edit : J'ai apporté un petit gradient pour mettre la luminosité aux max/min...

#!/bin/bash 
# Créé par Nordinatueur
if [[ $(whoami) != "root" ]]; then
    echo "sudo ${0##*/} $@" && sudo ${0} $@ ;
    exit;
else
    #Période pour définir les luminosités max et min.
    dt=0.05;
    #Fichier de luminosité
    BN="/sys/class/backlight/acpi_video0/brightness";
    maxB=$(cat /sys/class/backlight/acpi_video0/max_brightness);
    fin() { echo "${1}"; exit; } 

    Usage()
    {
        cat<<-EOF
            Usage :
            ${0##*/} <option>
            -h    Affiche cette aide
             N    Définit la luminosité à N. (N est compris entre 0 et ${maxB})
            -N    Enlève N à la luminosité courante. (si possible)
            +N    Ajoute N à la luminosité courante. (si possible)
            +/-    Ajoute/Enlève 1 à la luminosité courante. (si possible)
            min/max    Met la luminosité au min/max.
EOF
        exit;
    }

    case ${1} in
    -h|--help)
        Usage;;
    -path)
        echo ${0};
        exit;;
    [0-9])
        b=${1}; [[ ${b} -ge ${maxB} ]] && b=${maxB};
        echo ${b} > ${BN};;
    +[0-9]|+)
        b=$(cat ${BN}); [[ ${b} -ge ${maxB} ]] && fin "Luminosité maximale...";
        s=${1#+}; [[ ${s} == "" ]] && s=1;
        s=$((b+s));
        [[ ${s} -gt ${maxB} ]] && s=${maxB};
        while [[ ${b} -lt ${s} ]];do ((b++)); echo ${b} > ${BN}; sleep ${dt}; done;;
    -[0-9]|-)
        b=$(cat ${BN}); [[ ${b} -le 0 ]] && fin "Luminosité minimale..." ;
        s=${1#-}; [[ ${s} == "" ]] && s=1;
        s=$((b-s));
        [[ ${s} -lt 0 ]] && s=0;
        while [[ ${b} -gt ${s} ]];do ((b--)); echo ${b} > ${BN}; sleep ${dt}; done;;
    min)
        b=$(cat ${BN}); [[ ${b} -eq 0 ]] && fin "Luminosité minimale..." ;
        while [[ ${b} -gt 0 ]];do ((b--)); echo ${b} > ${BN}; sleep ${dt}; done;;
    max)
        b=$(cat ${BN}); [[ ${b} -ge ${maxB} ]] && fin "Luminosité maximale...";
        while [[ ${b} -lt ${maxB} ]];do ((b++)); echo ${b} > ${BN}; sleep ${dt}; done;;
    *)
        fin "Argument invalide";;
    esac;

    echo "Luminosité ${b}/${maxB}...";
fi;

Dernière modification par nordinatueur (Le 22/05/2012, à 12:12)


nordinatueur@jabber.fr Linux User #508094
Pour une meilleure coopération, utilisez des liens relatifs sur le forum !

Hors ligne

#1596 Le 22/05/2012, à 21:30

Marukakuru

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Je me suis fait un petit script de récupération automatique des notes de pistes audio depuis MusicBrainz (un peu comme XBMC récupère la note des films depuis IMDb). Bon, ça ne marche que pour les pistes Flac, mais je pense qu'on peut adapter rapidement pour du Ogg Vorbis. La note est enregistrée pour Banshee, et sous un format qui devrait être compatible avec XBMC, et il est facile d'adapter le système pour tout lecteur la lisant depuis les tags (par exemple MediaMonkey, mais pas Rhythmbox ?). On peut mettre en paramètre un dossier, sinon il scanne et note depuis le dossier courant.

A noter qu'il faut installer flac et bc pour que le script fonctionne, et que le Flac soit encodé avec un lecteur qui exploite MusicBrainz pour récupérer les metadata, comme par exemple Banshee.

Je vous livre la bête dans son jus:

#!/bin/bash
# Fonction de notation et d'affichage des pistes
function ratingTrack {
    # Si aucun flac n'est trouvé, sortie
    if [ ! -e "$1" ]
    then
        echo "No Flac track found…"
        exit 0
    fi
    # Affichage du nom du fichier
    echo -n "$1"
    # Récupération de la note sur MusicBrainz
    trackid=`metaflac --show-tag=MUSICBRAINZ_TRACKID "$1" | cut -d'=' -f2`
    rating=`wget -q -O - http://musicbrainz.org/ws/1/track/$trackid?inc=ratings | cut -d'"' -f11 | cut -d'>' -f2 | cut -d'<' -f1`
    # S'il y a une note…
    if [ $rating ]
    then
        # Définition des tags à ajouter et des coefficients multiplicateurs à appliquer (MB renvoie une note sur 5)
        # A noter que Bash ne comprend que les nombres entiers! Si le coef. est inférieur à 1, le mettre sous forme de fraction
        for t in {"RATING|1","RATING:BANSHEE|1/5"}
        do
            tag=`echo $t | cut -d'|' -f1`
            coef=`echo $t | cut -d'|' -f2`
            # Les tags sont effacés et recréés
            metaflac --remove-tag=$tag "$1"
            metaflac --set-tag=$tag=`echo "(($rating*$coef))" | bc -l` "$1"
        done
        # Affichage de la note (sur 5 étoiles) à droite du terminal
        stars=""
        for j in `seq 1 $rating`
        do
            stars=$stars"*"
        done
        col=`expr $(tput cols)`
        if (( ((${#1}%$col)) <= (($col-5)) ))
        then
            col=`expr $col - ${#1} % $col`
        else
            printf "\n"
        fi
        printf "%${col}s" "$stars"
    fi
    printf "\n"
}
# Utilise le chemin passé en paramètre, sinon le chemin courant
if [ -n "$1" ]
then
    searchhere=`echo "$1"`
else
    searchhere=`echo $PWD`
fi
# Appel de la fonction ratingTrack sur les fichiers *.flac trouvés
export -f ratingTrack
find "$searchhere" -type f -name '*.flac' -exec bash -c 'ratingTrack "$0"' {} \;

Edit du 06/06/2012: petites améliorations pour mieux supporter l'absence de note dans MusicBrainz

Dernière modification par Marukakuru (Le 06/06/2012, à 23:07)


9ème corollaire à la loi de Murphy : "L'Univers n'est pas indifférent à l'intelligence, il lui est activement hostile."

Hors ligne

#1597 Le 27/05/2012, à 00:18

yrieix

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour,

J'aurais aimé savoir si quelqu'un pouvait/savait/voudrait faire un script pour voyager 12.04 concernant le niveau de luminosité au démarrage (qui se remet au automatiquement minimum à chaque fois) ?
En fait j'ai installé voyager sur le pc portable d'une personne et j'aimerais pas qu'elle fasse plusieurs fois "fn + luminosité +" à chaque démarrage...

Je pense aussi que ce script pourrait servir à quelques personnes sous Ubuntu :

Recherche du problème

Qui à priori n'ont pas trouvé de solution non plus.

Merci à tous de m'avoir lu et à bientôt,

@+

Hors ligne

#1598 Le 27/05/2012, à 12:20

nordinatueur

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Mon script ici :
./viewtopic.php?pid=9289911#p9289911

Si tu suis les instructions du premier post tu pourras l'utiliser sans mot de passe et donc intégrer la commande dans .profile ou autostart (évite bashrc) ...


nordinatueur@jabber.fr Linux User #508094
Pour une meilleure coopération, utilisez des liens relatifs sur le forum !

Hors ligne

#1599 Le 27/05/2012, à 12:34

yrieix

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour,

J'hallucine, c'était trois posts au dessus, quel boulet que je fais tongue
Je teste ça dès cette après-midi et te dis si ça fonctionne sous voyager.

Merci!

Hors ligne

#1600 Le 28/05/2012, à 21:51

le hollandais volant

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Diogène le cynique a écrit :

Bonjour,

J'aurais aimé savoir si quelqu'un pouvait/savait/voudrait faire un script pour voyager 12.04 concernant le niveau de luminosité au démarrage (qui se remet au automatiquement minimum à chaque fois) ?

Est-ce vraiment necéssaire d’avoir un script énorme pour ça ?
la simple commande suivant placée en application au démarrage devrait suffire :

xbacklight -set 80

(nécéssite le paquet xbacklight, et le 80 correspond au pourcentage).


Windows : il y a mieux ! Mais c'est moins cher…

Hors ligne

Haut de page ↑