Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1376 Le 10/04/2011, à 09:42

sdblepas

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

Petit Up smile
Salut à tous
J'ai une demande de script, je ne veux pas tout le script mais juste une direction pour pouvoir le commencer.
Je voudrais faire un script qui scan un dossier (avec sous dossier) ou j'ai des videos (AVI|MPEG4|MKV) de la Music (MP3|FLAC|MIDI) des ebook (PDF|EPUB|MOBI) et qui lise les métadata de ces fichiers pour en créer un xml.
Dans le xml il y aurait à chaque fois toutes mes vidéos ou toutes mes Musique …
Pour résumer :
1 Fichier Vidéo
1 Fichier Musique
1 Fichier Ebook
Pour le xml en plus de la metadata lu il faudrait le full path pour l'acces.
Merci

Hors ligne

#1377 Le 10/04/2011, à 09:52

ljere

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

@sdblepas
tu peux prendre ça comme point de départ déjà dossier magique


ancien PC Toshiba satellite_c670d-11 / Linux Mint 21 Vanessa
Nouveau PC ASUS TUF GAMING A17 GPU RTX 4070 CPU AMD Ryzen 9 7940HS w/ Radeon 780M Graphics / Linux Mint 21.2 Victoria / Kernel: 6.4.8-1-liquorix / Desktop: Cinnamon

Hors ligne

#1378 Le 10/04/2011, à 11:12

sdblepas

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

@ljere
Merci pour la reponse, mais ce qu'il me faudrait c'est comment extraire les metadata. Mes dossiers sont deja range correctement
Merci

Hors ligne

#1379 Le 10/04/2011, à 11:58

rmy

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

regarde peut-être du côté de hachoir-metadata

Hors ligne

#1380 Le 10/04/2011, à 14:11

sdblepas

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

merci rmy  smile
ca m'a l'air pas mal

Hors ligne

#1381 Le 13/04/2011, à 10:02

Nik0s

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

Bonjour à toutes et à tous,

J'adapte en ce moment un script (qui existe déjà mais qui a besoin d'être mis à jour) qui nous permettra de :

  • Télécharger la dernière source de PHP 5

  • Compiler cette version.

  • Télécharger les sources en cours de Nginx

  • Compiler Nginx

  • Télécharger FastCGI et le compiler

  • Configurer FastCGI, Php 5, Nginx

  • Installer Mysql


Cette première version permettra de compiler toutes les sources (avec les options par défaut). Les prochaines versions, je l'espère, permettront de configurer plus finement les options.

Dernière modification par Nik0s (Le 13/04/2011, à 10:04)

Hors ligne

#1382 Le 25/04/2011, à 19:52

Nik0s

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

Je viens de finaliser un script permettant de générer un fichier slideshow pour les wallpapers d'Ubuntu. Je ne sais pas si cela existe, donc voici ma version :

#!/bin/bash
# Objectif : générer automatiquement un slideshow pour ubuntu

echo -e "SlideShow XML Autobuilder par \033[1mNikos\033[0m"

# Search for parameters
if [ $# -ne 4 ]         # si le nombre de paramètres n'est pas 2
    then                    # affiche l'usage
    echo -e "\033[1mCe script nécessite deux paramétres : \033[0m"
    echo -e "\t- Un dossier où sont stockées vos images \E[32;1m ~/Images/ \E[32;0m" 
    echo -e "\t- L'extension de vos images  \E[32;1m png \E[32;0m"
    echo -e "\t- Le temps d'affichage en secondes entre deux images  \E[32;1m 300 \E[32;0m"
    echo -e "\t- Durée de la transition \E[32;1m 2 \E[32;0m"
    echo -e "\033[4mExemple\033[0m $0 ~/Images/ png"
    exit 1
fi

# Parameters OK
# Check if slash is present for the folder path
case $1 in 
    */)
        # Slash is present nothing to do, keep continue
        ;;
    *)
        echo $1 ne comporte pas de slash à la fin. Veuillez corriger le chemin.
        exit 1
        ;;
esac

IMAGES=($(ls -d -1 $1*.$2))
ELEMENTS=${#IMAGES[@]}

if [ ${#IMAGES[@]} -eq 0 ]
    then # We have a problem here !! no image found there is an issue
    echo Une erreur s''est produite durant l''éxecution du script
    if [ ! -d $1 ]
        then
        echo $1 est introuvable existe ou ne peut être un fichier. 1>&2
        exit 1
    fi
    echo Le script n''a pas trouvé de fichiers $2 dans le dossier $1 1>&2
    exit 1
fi
echo ${#IMAGES[@]} trouvés, en cours de création du fichier slideshow 1>&2
echo Ce fichier sera placé dans le dossier $1. Attention ce script doit avoir la permission de créer un fichier dedans 1>&2
echo Le fichier background.xml va être généré.

if [ ! -d "${1}" ] ; then
        echo "$1 n'est pas un dossier ou n'existe pas" >&2
        exit 1
fi

if [ $3 -lt 0 ]
    then
    echo -e "La valeur \E[32;1m${3}\E[32;0m ne peut être utilisée comme durée avant une transition"
    exit 1
fi

if [ $4 -lt 0 ]
    then
    echo -e "La valeur \E[32;1m${4}\E[32;0m ne peut être utilisée comme durée de transition"
    exit 1
fi

touch "${1}background.xml" /dev/null 2>&1
if [ $? -gt 0 ]
    then
    echo -e "Le fichier $1background.xml n' a pas pu être créé, code erreur : \E[32;1m $? \E[32;0m"
    exit 1
fi

# Start writing to the background.xml file, need to be optimized
echo "<background>
    <starttime>
        <year>$(date +%Y)</year>
        <month>$(date +%m)</month>
        <day>$(date +%e)</day>
        <hour>$(date +%H)</hour>
        <minute>$(date +%M)</minute>
        <second>$(date +%S)</second>
    </starttime>" >> "${1}background.xml"

# Time to do math
let ELEMENTS=${#IMAGES[@]}-1

# Loop part have fun !!!!!
for (( i = 0 ; i < ${#IMAGES[@]} ; i++ ))
do
#echo ${IMAGES[${i}]} >> "$1background.xml"
    echo "    <static> 
        <duration>${3}</duration>
        <file>${IMAGES[$i]}</file>
        </static>
        <transition>
            <duration>${4}</duration>
            <from>${IMAGES[${i}]}</from>" >> "${1}background.xml"
    if [ $i -eq $ELEMENTS ]
    then
    echo "            <to>${IMAGES[0]}</to>" >> "$1background.xml"
    else
    echo "            <to>${IMAGES[$i+1]}</to>" >> "$1background.xml"
    fi
    echo "        </transition>" >> "$1background.xml"
done
echo "</background>" >> "$1background.xml"
echo "Génération du fichier terminé, fin du script."

Dernière modification par Nik0s (Le 25/04/2011, à 22:21)

Hors ligne

#1383 Le 25/04/2011, à 20:03

Bousky

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

  1. Il n'est pas nécessaire de vérifier la présence du "/" à la fin du dossier, il suffit de toujours en ajouter un (dossier//fichier est identique à dossier/fichier). Il est plus utile de tester qu'il s'agit bien d'un dossier existant avec :

    if [ ! -d "$1" ] ; then
            echo "$1 n'est pas un dossier ou n'existe pas" >&2
            exit 1
    fi
  2. Sauf cas exceptionnel, il est préférable de toujours entourer les variables et les arguments de guillemets doubles pour éviter les problèmes avec les espaces.

  3. À priori, « $1background.xml » va poser problème, car bash va chercher la variable nommé « 1background.xml ». Il faut l'écrire "${1}background.xml" (c.f. 2 pour les guillemets).


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

#1384 Le 25/04/2011, à 21:11

Levi59

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

Le echo peut être simplifié il me semble :

echo "<background>" >> "$1background.xml"
echo "    <starttime>" >> "$1background.xml"
echo "        <year>$(date +%Y)</year>" >> "$1background.xml"
echo "        <month>$(date +%m)</month>" >> "$1background.xml"
echo "        <day>$(date +%e)</day>" >> "$1background.xml"
echo "        <hour>$(date +%H)</hour>" >> "$1background.xml"
echo "        <minute>$(date +%M)</minute>" >> "$1background.xml"
echo "        <second>$(date +%S)</second>" >> "$1background.xml"
echo "    </starttime>" >> "$1background.xml"

Peut être remplacé par :

echo "<background>
    <starttime>
        <year>$(date +%Y)</year>
        <month>$(date +%m)</month>
        <day>$(date +%e)</day>
        <hour>$(date +%H)</hour>
        <minute>$(date +%M)</minute>
        <second>$(date +%S)</second>
    </starttime>" >> "${1}background.xml"

Et pour la durée (duration) fixe, peut être qu'il serait intéressant de la modifier en fonction du nombre d'images ou en questionnant l'utilisateur... Ce n'est qu'une idée bien sûr! ^^

Hors ligne

#1385 Le 25/04/2011, à 21:26

Bousky

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

Généralement je fais ce genre d'echo de cette manière :

echo "\
ligne 1
ligne 2
…
dernière ligne"

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

#1386 Le 25/04/2011, à 21:46

Nik0s

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

Très bonne idée pour la duration, concernant l'echo, je vais modifier le tout. Merci de vos conseils.

edit : Je viens de mettre à jour la partie echo.
edit 1 : Je viens d'ajouter la partie duration et transition

J'espère que cela servira !!

Nikos

Dernière modification par Nik0s (Le 25/04/2011, à 22:21)

Hors ligne

#1387 Le 09/05/2011, à 02:15

Pepou06

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

niko_las a écrit :
brt a écrit :

SCRIPT : "Sauver des arbres"

Qui n'a jamais essayé d'imprimer en deux pages par feuilles, recto-verso, (sur une imprimante recto) sans se planter ?
J'ai rédigé un petit script python qui donne des instructions pour que tout fonctionne bien :
...
- J'aimerais faire évoluer ce script, pour qu'il communique directement avec cups, m'enfin j'en suis encore loin.

Bonjour,
voici mon premier script "Sauvons des arbres", qui communique directement avec cups.
Ce script utilise zenity pour un peu plus d'interaction.
Il permet d'imprimer un pdf  en deux pages par feuilles, recto-verso (simple ou en livret A5 sur du A4 plié en 2), en choisissant l'imprimante de destination parmi celles installées (sous cups).

Pour cela il faut avoir cups d'installé, ainsi pdfnup (disponible dans le paquet pdfjam), et pdfbook pour le mode livret (à compiler soi-même, on peut le trouver ici : ftp://cam.ctan.org/tex-archive/support/pdfbook.zip)

Trêve de blabla, voici le script

#!/bin/bash
#!/bin/bash
#Propose d'imprimer un pdf format A4 en 2 page par feuilles recto-verso (simple ou livret), pour des imprimantes ne gérant pas le recto verso.
#(avec choix de l'imprimante en fonction des imprimantes installées)
#nécessite cups, ainsi que le programme pdfnup disponible dans le paquet pdfjam
#L'impression en mode livret nécessite l'installation de pdfbook (à compiler soi-même, on peut le trouver ici : ftp://cam.ctan.org/tex-archive/support/pdfbook.zip)

rvsimple="recto-verso simple"
livret="mode livret"
fich=$1
#Si aucun fichier n'est donné en argument, on en choisi un
if test $# -eq 0; then
 if ! fich=`zenity --title="Entrez le fichier pdf à imprimer" --file-selection`; then exit;  fi
fi

#choix de l'imprimante (l'imprimante par défaut est proposée par défaut ;)
if ! lpr=$(zenity --entry --title="imprimante" --text="Choix de l'imprimante" --entry-text="$(lpstat -d | awk -F": " '{print $2}')" $(lpstat -a | awk -F" " '{print $1}')); then exit; fi

basefich=`dirname $fich`/`basename $fich pdf`
tmpfich="$basefich"1.book.pdf

if ! choix=$(zenity --list --title="choix du format" --column="choix"  --column="format" \
     --radiolist true  "$rvsimple" \
    --radiolist false "$livret" ); then exit; fi

if ! $(zenity --title="Poursuivre l'impression?" --question --text="Impression du fichier $fich en mode $choix sur l'imprimante $lpr ! \nContinuez?"); then exit ; fi

#mise en page (2 pages par feuilles selon le mode choisi)
if [ "$choix" = "$livret" ]; then
pdfbook -2 "$fich" "$tmpfich" 
else
pdfnup --nup 2 "$fich" --paper a4paper --orient landscape --outfile "$tmpfich" 
fi
#attendre que la mise en page soit finie
wait
#impression du recto
lp -d "$lpr" -o page-set=odd -o number-up=1 -o outputorder=reverse "$tmpfich" | zenity --title="Impressio du recto" --progress --pulsate --auto-close
if ! $(zenity --title="Recto imprimé" --question --text="Recto envoyé à l'impression \nAttendez la fin de l'impression et retournez les feuilles dans le bac de l'imprimante! \nContinuez?"); then
rm "$tmpfich"
exit
fi

#impression du verso
lp -d "$lpr" -o page-set=even -o number-up=1 "$tmpfich" | zenity --title="Impressio du verso" --progress --pulsate --auto-close
rm "$tmpfich"

#confirmation
zenity --title="Impression ok" --info --text="Verso envoyé à l'impression"

Usage :

sh ./print-pdf2book.sh document.pdf

ou alors, a placer dans les scripts nautilus, et l'utiliser en cliquant sur une fichier pdf.

Si aucun fichier n'est donné en argument, un fenêtre apparait et permet de choisir un fichier.

Le plus gros problème reste de savoir comment retourner  les feuilles (attention, je crois que ce n'est pas pareil en r&v simple et en livret, à vous de tester).

Pour info, c'est une modif' dun script trouvé ici : http://memo-gf.blogspot.com/2008/03/a5book.html (j'en remercie l'auteur, jusque là je n'avais jamais jeté un oeil à Zenity).

NB : il est ultra facile de réécrire ce script pour des fichiers ps, mais personnellement, j'imprime plus de pdf.

PS : si qqn à besoin d'une version ligne de commande seulement (en enlevant l'utilisation de zenity), qu'il me le fasse savoir.

Je n'arrive pas à faire marcher ce script, voici l'erreur qu'il me retourne :

pdfnup ERROR: the --orient option is not allowed,
  use --landscape or --no-landscape to specify
  the output page orientationlp : erreur - impossible d'accéder à « /1.book.pdf » - Aucun fichier ou dossier de ce typelp : erreur - impossible d'accéder à « /1.book.pdf » - Aucun fichier ou dossier de ce typerm: impossible de supprimer «/1.book.pdf»: Aucun fichier ou dossier de ce type

Savez-vous d'où cela peut venir ?

Hors ligne

#1388 Le 12/05/2011, à 18:39

fredz68

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

Bonjour, j'ai trouvé un script nautilus sympa qui converti les wav en mp3 ou ogg par lots, mais j'aimerai savoir si il est difficile d'intégrer la conversion par lot de mp3 en wav ou ogg...

Voici le petit :

#!/bin/bash

# rem. : pour avoir les boites de dialogue au premier plan, 
# installer le paquet zenity - 2.26.0-0ubuntu2 ou supérieur
# ou installer le patch pour zenity (bug zenity-focus) 

version="V0.4"
#V0.4    :    encodage flv video vers avi et inversement, traitement par lots audio et video.
#####################################################################
# MMConvert :
# Ce script sert à convertir des fichiers multimédia                                   
######################################################################
######################################################################
## Fenêtres Zenity

title="MMConvert   $version"
not_man="non géré..."
f_fi="Format de fichier"
pac_zenity="Vous devez installer le paquet 'zenity' pour utiliser ce script."
pac_ffmpeg="Vous devez installer le paquet 'ffmpeg' pour utiliser ce script."
no_fic="Veuillez sélectionner au moins un fichier à convertir  ;)  "
please_sel="Veuillez choisir le format dans lequel convertir :"
give_name="Veuillez donner un nom au dossier de destination (ex: le nom de l'album)"
suppr_fi="Souhaitez-vous supprimer les fichiers originaux aprés conversion ?"
bye="Annulation.................... A bientôt."
OK="                    Conversion terminée !"

######################################################################
## AJOUTER ICI LA LISTE DES FORMATS GERES ET LEUR EXTENSION 
## (l'orthographe exacte des mots de la liste 
# peut être récupérée par un 'file -b fichier')

list_OK="Mp3 Wave Flash Vorbis"
extension=".mp3 .wav .flv .ogg .avi"
######################################################################        
## CONTROLES
    # Recherche du paquet 'zenity'. Si absent : exit
    dialog=`which zenity`
    if [ "$dialog" = "" ]; then
        zenity --error --title="$title" --text="$pac_zenity"
        exit
    fi
    # Recherche du paquet 'ffmpeg'. Si absent : exit
    encod=`which ffmpeg`
    if [ "$encod" = ""]; then
        zenity --error --title="$title" --text="$pac_ffmpeg"
        exit
    fi
    # Si pas de fichier d'entrée (!) : exit.
    if [ "$1" = "" ]; then
        zenity --error --title="$title" --text="$no_fic"
        exit
    fi

## CONVERSION
    # Demande du format de sortie souhaité :
    format_out=$(zenity --entry --title="$title"  \
                --text="$please_sel" \
                --entry-text=$extension);
    if [ $? != 0 ]; then # annulation
        zenity --error --title="$title" --text="$bye"
        exit
    fi
    # Demande d'un nom de dossier où sauvegarder le(s) fichier(s) converti(s) :
    dossier=$(zenity --entry --title="$title" --text="$give_name" --entry-text="MMConvert")
    if [ $? != 0 ]; then # annulation
        zenity --error --title="$title" --text="$bye"
        exit
    fi
    # Supprimer les originaux après conversion ?
    suppr=$(zenity --title="$title" --text="$suppr_fi" \
            --list --radiolist --column " " --column " " TRUE "OUI" FALSE "NON")
    if [ $? != 0 ]; then # annulation
        zenity --error --title="$title" --text="$bye"
        exit
    fi

    mkdir "$dossier"
    a=1
    nb_fi=$#
    until [ -z "$1" ] # Jusqu'à épuisement des fichiers...
    do
        pourcentage=$[$a*100/$nb_fi]        
        # Par fichier : recherche du format d'origine.
        format_in=$not_man
        for i in $list_OK
        do    # Si le format d'origine est géré : traitement...
            if [ "`file -b "$1" | grep "$i"`" != "" ]; then 
                name_file=`echo "$1" | sed 's/\.\w*$/''/'`
                fi_out=$name_file$format_out
                if [ "$format_out" = ".avi" ]; then # Conversion video
                    ffmpeg -b 768k -ab 128k -i "$1" -f avi "./$dossier/$fi_out" \
                    | zenity --progress --title="$title" \
                    --text="Conversion de : ' $name_file ' en $format_out ($a sur $nb_fi fichiers)" \
                    --percentage="$pourcentage" --auto-close
                else #conversion audio
                    ffmpeg -ab 192k -i "$1" "./$dossier/$fi_out" \
                      | zenity --progress --title="$title" \
                        --text="Conversion de : ' $name_file ' en $format_out ($a sur $nb_fi fichiers)" \
                        --percentage="$pourcentage" --auto-close
                fi

                if [ "$?" != "0" ] ; then # Annulation
                      zenity --error --title="$title" --text="$bye"
                    exit
                fi

                let a=$a+1
                format_in=" "
                if [ "$suppr" = "OUI" ]; then
                    rm ./"$1" # Suppression de l'original en flv
                fi
            fi
        done
        #... sinon : on passe au fichier suivant, 
        # aprés avoir complété la liste des fichiers non traités.
        if [ "$format_in" = "$not_man" ]; then     
            echo $f_fi$not_man : $1 >> ./"$dossier"/non_traites.log
        fi
          shift
    done
    zenity --info --title="$title" --text="$OK"

exit 0

Merci d'avance.

fredz68

Hors ligne

#1389 Le 12/05/2011, à 20:50

runcom

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

Shrat a écrit :
beudbeud a écrit :
Oreste visari a écrit :

Personne n'as de script pour télécharger l'émission "c dans l'air" qui passe sur france 5 en semaine vers les 17H30 ?

J'adore cette émission mais je ne peut la regarder qu'en période scolaire, ce qui est vraiment énervant.

Téléchargement de l'émission c dans l'air

- Auteurs : écrit par beudbeud


#!/bin/sh
#script de beudbeud

mkdir -p $HOME/videos/c_dans_l_air/
DATE=`date +%Y-%m-%d -d '1 days ago'`
URL="http://www.france5.fr/c-dans-l-air/index-fr.php?page=resume&id_article=2772&date="
FILE1=` wget -O - -q $URL$DATE | grep mms | awk -F= '{print $4}' | awk -F"&" '{print $1}'`

mimms $FILE1 $HOME/videos/c_dans_l_air/$DATE.wmv

ensuite pour automatiser le téléchargement on utilise cron

crontab -e

et tu rajoute la ligne suivante

50 17 tue,wed,thu,fri,sun lien_du/script/lescript.sh

donc le script se lancera du mardi au vendredi a 17h50 pour récupéré l'émission de la veille

Ha oui, ta manière de faire est bien meilleure que la mienne.


Bonjour,

Ce script est complet pour pouvoir telecharger l'émission c dans l'air
merci de votre réponse!!

Hors ligne

#1390 Le 15/05/2011, à 10:12

omnimax

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

Un bloc-note texte : dès qu'un surlignage souris vous interresse >  un raccourci clavier assigné au script et c'est directement conservé dans votre bloc note


#!/bin/bash

xclip -o >> ~/blocnote
echo -e "\n" >> ~/blocnote

0 exit

enjoy


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#1391 Le 15/05/2011, à 18:20

Bousky

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

Dans le même genre, je me suis fais un todo :

#!/bin/bash

file=~/.todo

case "$1" in
-h)
echo "\
todo.sh [-f <file>] [commande [adresse]] ...

-f <file>
    utilise le fichier <file> au lieu de `sed "s|$HOME|~|" <<< "$file"`

commande :
    s    supprime la ligne indiquée par l'adresse, efface le fichier si aucune adresse n'est indiquée
    t    retourne 1 si le fichier est vide, 0 sinon
    i    insère le reste de la ligne de commande après la ligne indiqué par l'adresse (au début du fichier si l'adresse est 0)
    a (ou pas de commande)
        insère le reste de la ligne à la fin du fichier
    pas d'arguments
        affiche le fichier de manière formatée

adresse : c.f. man sed"
exit ;;
-f)
    file="$2"
    shift 2 ;;
esac

[ -e "$file" ] || touch "$file"

case "$1" in
"")
    sed 's/^/ → /' "$file" ;;
s)
    sed -ir "${2}d" "$file" ;;
t)
    [ -s "$file" ] ;;
i)
    line=$(
        echo -n "$3"
        while [ "$4" ] ; do
            echo -n " $4"
            shift
        done
    )
    if [ "$2" = 0 ] ; then
        sed -i "1i$line" "$file"
    else
        sed -ir "${2}a$line" "$file"
    fi ;;
a)
    echo -n "$2" >> "$file"
    while [ "$3" ] ; do
        echo -n " $3" >> "$file"
        shift
    done
    echo >> "$file" ;;
*)
    echo -n "$1" >> "$file"
    while [ "$2" ] ; do
        echo -n " $2" >> "$file"
        shift
    done
    echo >> "$file" ;;
esac

puis dans mon bashrc :

function clear {
    /usr/bin/clear
    ~/Scripts/todo.sh t && ~/Scripts/todo.sh
}

À l'occasion il faudra que je le factorise un peu...

Sinon, quelqu'un sait comment récupérer la position du curseur dans le prompt ? On peut le faire comme ça :

echo -en "\E[6n"
read -sdR CURPOS
CURPOS=${CURPOS#*[}

mais ça ne marche pas dans un prompt…


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

#1392 Le 16/05/2011, à 11:29

frantzd

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

greg2007 a écrit :

Un bloc-note texte : dès qu'un surlignage souris vous interresse >  un raccourci clavier assigné au script et c'est directement conservé dans votre bloc note


#!/bin/bash

xclip -o >> ~/blocnote
echo -e "\n" >> ~/blocnote

0 exit

Merci pour l'info.

Pour celles et ceux qui utilisent l'excellent parcellite, on peut remplacer "xclip -o" par "parcellite -p".

A+

Hors ligne

#1393 Le 22/05/2011, à 12:32

Kharec

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

Bonjour à tous, je vous présente ici un script pour retailler automatiquement les images, en les sélectionnant par extension (.*). Il fonctionne grâce à la commande "convert" du soft "imagemagick", vous avertit s'il y a une erreur et vous tiens au courant de son avancement.

#!/bin/bash
i=1
usage='example: ./resizer.sh JPG 1024x768'
if [[ -z $1 ]]
then
    echo $usage
    exit 1
fi
if [[ -z $(ls *.$1) ]]
then
    echo "No file found, or bad file type. ($usage)"
    exit 1
fi
echo "$(ls *.$1 | wc -l | awk 'NR==1 {print $1}') file(s)..."
for file in *.$1
do
    convert $file -resize $2 $file
    if [[ $? == 0 ]]
    then
        echo "$i:   $file  -------->   OK."
    else
        echo "Error on file $file"
        exit 1
    fi
    ((i++))
done
exit 0

Enjoy wink

Hors ligne

#1394 Le 22/05/2011, à 13:10

le hollandais volant

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

Bonjour, vu que le titre suggère qu'il est possible de demander un scripts…

J'utilise le navigateur Opera, et il se trouve que le module WOT (web of trust) soit responsable d'une consommation excessive de mémoire quand je suis hors ligne.
Ainsi, d'un seul coup, Opera se met à utiliser mes 2Go de RAM ainsi que toute la SWAP et c'est un plantage complet de l'ordinateur si rien n'est fait.
J'utilise pour le moment un bouton "urgence Opera" avec la commande suivante pour le tuer :

kill -9 `ps -u timo | grep 'opera' | cut -d ' ' -f 1`

Au moment où ça commence à laguer, je tue Opera et en général ça marche (si j'interviens trop tard, plus rien ne répond).

J'aimerais savoir s'il y'avait possibilité d'ouvrir un popup de Gnome me signalant qu'Opera dépasse un seuil d'utilisation de mémoire.
Par exemple, s'il dépasse 500Mio en mémoire, un popup s'ouvre et m'avertit.
Idéalement, il y aurait un bouton "tuer Opera" et un autre "ne rien faire".

Je pense que pour l'occupation mémoire il faille utiliser un grep et des cut sur ps :

ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS | grep -E '^[0-9]{6,} .*/opera' | cut -d ' ' -f 1

Mais ensuite, je ne sais pas s'il y'a plus simple que cette commande à rallonge, ni comment continuer pour afficher le popup dés que la valeur retournée dépasse disons 500'000 Ko.

Tout cela est-il possible au moyen d'un scripte ??

Merci !

Hors ligne

#1395 Le 22/05/2011, à 14:40

Levi59

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

Il y a plusieurs façons de faire...
la plus simple qui me vienne à l'esprit c'est un petit script lancé en même temps que opera du style:

#!/bin/bash

while (1)
do

    PROCESS=$(pgrep -c opera)

    [[ ${PROCESS} -ne 0 ]] && {
        MEM=0
        while read
            VALMEM=${REPLY##* }
            MEM=$(echo "$VALMEM+$MEM" | bc)
        done < <(ps -eo args,%mem | grep -i '^opera')
        MEM=${MEM%.*}
        [[ "${MEM}" -gt 25 ]] && killall opera
    } || exit 0

    sleep 10
done
exit 0

(Je n'ai pas testé donc il faut vérifier de ton coté)

Dernière modification par Levi59 (Le 22/05/2011, à 14:48)

Hors ligne

#1396 Le 22/05/2011, à 16:53

Rolinh

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

@le hollandais volant: au passage, plutôt que

kill -9 `ps -u timo | grep 'opera' | cut -d ' ' -f 1`
pkill opera

c'est un peu plus court tongue

Hors ligne

#1397 Le 22/05/2011, à 16:57

omnimax

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

Bonjour à tous,

savez-vous comment on code le comportement suivant :

je glisse un fichier texte sur gedit > gedit s'ouvre avec le fichier en question

merci si jamais


14.04 unity et Linux Mint KDE 13 zsh-meilleur shell   script fire

Hors ligne

#1398 Le 22/05/2011, à 17:09

le hollandais volant

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

@Levi59  :merci, j'ai repris ton squelette et ça marche.
J'ai changé quelques truc aussi.

@Rolinh : y'a aussi "killall", mais le "kill -9" est plus violent, et c'est ce qu'il me faut ici.
Quand Opera bouffe toute la mémoire, j'ai quelques secondes pour le tuer, avant le freeze total :-/

J'ai découvert entre temps ceci : kill -9 `pgreg opera`.

Au final, j'utilise une boite de dialogue Zenity pour demander confirmation.
Le scripte doit être lancé avant ou en même temps que le processus à assassiner.


#!/bin/bash
# Process name to check out
NAME=opera

# Memory limit, in KB
MEM_LIM=400000

while [ 1 = 1 ]
do
    PROCESS=$(pgrep -c $NAME); # count processes
    [[ ${PROCESS} -ne 0 ]] && {

        # get mem (in KB) of process 'NAME'
        VALMEM=`ps -e orss,comm | grep $NAME | cut -d ' ' -f 1`

        if [ $VALMEM -gt $MEM_LIM ]
        then
            zenity --question --text "$NAME reaches $VALMEM KB" --ok-label "Kill $NAME" --cancel-label "Remember later"
            RETOUR="$?"; # annuler = 1   ;   valider = 0

                if [ $RETOUR = 0 ]
                then
                   kill -9 `pgrep $NAME`;
                fi
        fi

    } || exit 0
    sleep 30
done
exit 0

Merci à vous !

Dernière modification par le hollandais volant (Le 22/05/2011, à 17:09)

Hors ligne

#1399 Le 22/05/2011, à 17:43

Rolinh

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

Ouep. Par curiosité, c'est sûr Opera 11.11 ton bug? Parce que chez moi, ràs.

Hors ligne

#1400 Le 22/05/2011, à 17:59

le hollandais volant

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

Ouais, Opera 11.11 avec WOT.

J'ai signalé le bug sur Opera-fr, ce sont eux qui m'ont signalé que ça venait d'un module, et ça semble bien être la cas. Sans WOT, y'a pas de soucis…

Dernière modification par le hollandais volant (Le 22/05/2011, à 17:59)

Hors ligne