Contenu | Rechercher | Menus

Annonce

DVD, clés USB et t-shirts Ubuntu-fr disponibles sur la boutique En Vente Libre

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.

#1176 Le 11/11/2010, à 07:31

kyncani

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

Euh, dit voir, par simple curiosité, pourquoi cherches-tu à savoir si il y a une clé usb montée ou pas ?

Hors ligne

#1177 Le 11/11/2010, à 10:43

michcauch

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

Tout simplement parce que ma clef USB est un outil de travail, qu'il m'est arrivé de partir sans. J'y fais attention mais..., pour l'instant la seule réponse que j'avais trouvée c'était d'accrocher mes clefs de salle de classe et USB ensemble, mais ça ne m'a pas empêché un oubli.
Je ne vais quand même pas accroché mon cartable à ma clef USB smile
Si ce n'est pas possible, ce n'est pas grave, il me faut être moins distrait et oublieux !
Cordialement
Michel

PS : En fait la meilleure solution serait de me passer de clef USB et de transférer mon travail via un courriel (ce n'est pas si rapide que la clef USB) ou mieux via un ENT (espace numérique de travail) sur lequel je pourrais déposer mon travail c'est une habitude qu'il me faut prendre (c'est mieux que la clef USB accrochée au cartable).

Dernière modification par Michel Cauchois (Le 11/11/2010, à 10:45)


Cordialement
Michel
___
Ubuntu 20.04 sur Clevo N141WU et Xubuntu 16.04 sur Ordinateur de bureau Materiel.net Elite (Processeur Intel Core i3 6100, Intel HD Graphics, SSD 120 Go, 4 Go DDR4)

Hors ligne

#1178 Le 11/11/2010, à 13:33

Hizoka

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

c'est possible, regarde du coté du script de MultiSystem : http://forum.ubuntu-fr.org/viewtopic.php?id=427605

au lancement du logiciel il t'indique les cle usb dispo, le tout en bash.

sinon tu demande simplement à frafa, son createur smile


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#1179 Le 11/11/2010, à 15:56

michcauch

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

je teste dès que possible
Merci
Michel


Cordialement
Michel
___
Ubuntu 20.04 sur Clevo N141WU et Xubuntu 16.04 sur Ordinateur de bureau Materiel.net Elite (Processeur Intel Core i3 6100, Intel HD Graphics, SSD 120 Go, 4 Go DDR4)

Hors ligne

#1180 Le 20/11/2010, à 15:17

Xanatos00

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

Salut,

#!/bin/bash
# Version 0.1
# Auteur : Xanatos
# Description : Script d'aspiration d'une page web pour lecture en local, couplé au module External Applications Buttons de Firefox
# License : Script libre de toute modifications sans l'accord de l'auteur ;)

page=$(zenity --title="" --text="Saisir URL" --width=800 --entry) || exit
#l'url de la page web

path=/votredossiertemporaire

wget -p -nH -nd -E -k -K --ignore-length --limit-rate=20k -P $path $page
# p = télécharger tous les fichiers nécessaires à l'affichage
# nH = Désactive la génération de la racine des répertoires avec le nom de l'hôte
# nd = pas de repertoires
# E = ajout du suffixe .html
# k = convertir liens pour lecture en local
# K = garde le fichier original
# ignore-length = contourne bogue dans « Content-Length »
# limit rate = vitesse maxi de DL
# P = rep de sauvegarde

nomhtml=$(find $path -name "*.html")
#recuperation fichier html

nomdir=$(cat $nomhtml | grep -e "<title>" | sed 's|^.*<title>||' | sed 's|</title>.*||')
#on recupere le titre de la page

if [ "${nomdir}" = "" ]; then
#si il n'a rien trouvé
{
    nomdir=$(cat $nomhtml | grep -e "<TITLE>" | sed 's|^.*<TITLE>||' | sed 's|</TITLE>.*||')    
        #on reteste avec les balises en majuscules
    if [ "${nomdir}" = "" ]; then
        #s'il ne trouve encore rien
    {
        nomdir=$(zenity --title="pb titre" --text="pas de <title> correct, mettre titre"  --entry) || exit
                #input pour rentrer à la main
    }
    fi
}
fi

bouge=$(mv "${path}" /ouvousvoulez/"${nomdir}")
#on déplace et renomme le dossier avec le titre de la page httml

if [ $? != 0 ]; then
#et comme il peut y avoir des caracteres interdits, on verifie
{
    zenity --warning --text="Erreur !" || exit
}
fi

zenity --warning --timeout=1 --text="Terminé" || exit

exit 0;

l'idée étant que je puisse garder une copie en local d'une page web et de son contenu au premier niveau
et que chaque page a son dossier au nom de la page, d'ou la recupération du contenu entre <title> </title>
il y a juste un problème au niveau de l'extension de firefox qui supporte le passage d'url en argument mais qui ne fonctionne pas
et les sites qui mettent un <title> </title> sur plusieurs lignes ...

je suis plus qu' ouvert aux suggestions smile

Hors ligne

#1181 Le 20/11/2010, à 15:27

Siap

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

bonjour,

Xanatos00 a écrit :

Salut,

#!/bin/bash
# Version 0.1
# Auteur : Xanatos
# Description : Script d'aspiration d'une page web pour lecture en local, couplé au module External Applications Buttons de Firefox
# License : Script libre de toute modifications sans l'accord de l'auteur ;)

page=$(zenity --title="" --text="Saisir URL" --width=800 --entry) || exit
#l'url de la page web

path=/votredossiertemporaire

wget -p -nH -nd -E -k -K --ignore-length --limit-rate=20k -P $path $page
# p = télécharger tous les fichiers nécessaires à l'affichage
# nH = Désactive la génération de la racine des répertoires avec le nom de l'hôte
# nd = pas de repertoires
# E = ajout du suffixe .html
# k = convertir liens pour lecture en local
# K = garde le fichier original
# ignore-length = contourne bogue dans « Content-Length »
# limit rate = vitesse maxi de DL
# P = rep de sauvegarde

nomhtml=$(find $path -name "*.html")
#recuperation fichier html

nomdir=$(cat $nomhtml | grep -e "<title>" | sed 's|^.*<title>||' | sed 's|</title>.*||')
#on recupere le titre de la page

if [ "${nomdir}" = "" ]; then
#si il n'a rien trouvé
{
    nomdir=$(cat $nomhtml | grep -e "<TITLE>" | sed 's|^.*<TITLE>||' | sed 's|</TITLE>.*||')    
        #on reteste avec les balises en majuscules
    if [ "${nomdir}" = "" ]; then
        #s'il ne trouve encore rien
    {
        nomdir=$(zenity --title="pb titre" --text="pas de <title> correct, mettre titre"  --entry) || exit
                #input pour rentrer à la main
    }
    fi
}
fi

bouge=$(mv "${path}" /ouvousvoulez/"${nomdir}")
#on déplace et renomme le dossier avec le titre de la page httml

if [ $? != 0 ]; then
#et comme il peut y avoir des caracteres interdits, on verifie
{
    zenity --warning --text="Erreur !" || exit
}
fi

zenity --warning --timeout=1 --text="Terminé" || exit

exit 0;

l'idée étant que je puisse garder une copie en local d'une page web et de son contenu au premier niveau
et que chaque page a son dossier au nom de la page, d'ou la recupération du contenu entre <title> </title>
il y a juste un problème au niveau de l'extension de firefox qui supporte le passage d'url en argument mais qui ne fonctionne pas
et les sites qui mettent un <title> </title> sur plusieurs lignes ...

je suis plus qu' ouvert aux suggestions smile

et pourquoi ne pas utiliser cette extension: http://extensions.geckozone.org/UnMHT qui fera ce que tu demandes wink

Hors ligne

#1182 Le 20/11/2010, à 16:10

Xanatos00

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

arf, je ne connaissais pas
disons que j'ai pas tellement envie d'être dépendant du bon suivi de l'extension, là avec celle que j'utilise c'est vraiment pour faciliter quand je tombe sur une actu qui m'intéresse, mais je pourrai très bien passer en argument une liste de sites au script

Hors ligne

#1183 Le 21/11/2010, à 03:40

willcoyote

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

salut
j'aurai encore besoin de vos services
j'ai recupéré un script qui va bien pour convertir les images en jpg
seulement voila , quand il y a un espace dans le nom du fichier , ça ne marche pas

a votre avis , y'a un moyen de régler ce probleme ?

#!/usr/bin/python

import os
import sys

def new_name(file):
    os.path.splitext(file)
    return '.'.join([os.path.splitext(file)[0],'jpg'])

files = sys.argv[1:]

for file in files:
    os.system('convert %s %s' % (file, new_name(file)))

Hors ligne

#1184 Le 21/11/2010, à 05:04

kyncani

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

willcoyote a écrit :

seulement voila , quand il y a un espace dans le nom du fichier , ça ne marche pas

J'ai changé la dernière ligne et deux~trois autres trucs.
Assure-toi également d'invoquer le script correctement, par exemple en utilisant le glob "*" du shell (convert-script ./repertoire/*) ou encore en utilisant des quotes autour des noms de fichiers qui ont des espaces.

#!/usr/bin/python

import os
import sys

def new_name(file):
    return os.path.extsep.join([os.path.splitext(file)[0],'jpg'])

files = sys.argv[1:]
global_ret = 0

for file in files:
    cmd = ("convert", file, new_name(file))
    ret = os.spawnvp(os.P_WAIT, cmd[0], cmd)
    if ret != 0 and global_ret != 0 : global_ret = ret

sys.exit(global_ret)

Dernière modification par kyncani (Le 21/11/2010, à 05:14)

Hors ligne

#1185 Le 21/11/2010, à 12:44

willcoyote

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

kyncani a écrit :

Assure-toi également d'invoquer le script correctement, par exemple en utilisant le glob "*" du shell (convert-script ./repertoire/*) ou encore en utilisant des quotes autour des noms de fichiers qui ont des espaces.

ce script est dans le dossier ~/.gnome2/nautilus-script
je l'utilise avec un clic droit sur mes images=>scripts/convertir-en-jpg
donc je ne peut pas utiliser les quotes

je viens d'essayer avec ta modif et ça marche bien , exactement ce que je voulais
même avec des espaces dans le nom

nickel , je te remercie

Hors ligne

#1186 Le 25/11/2010, à 19:37

jipelft

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

Bonsoir,
Je recherche depuis des heures un script que me permettrais de renommer des fichiers "en masse".
Je m'explique: j'ai des fichiers .avi et .srt qui ne sont pas libellés de la même manière
Exemple: "Bones.S06E01.HDTV.XviD-LOL.avi" et "Bones - 6x01 - The Mastodon in the Room.HDTV.fr.srt"
Sous Windows je prends les deux et les renomme comme je le souhaite genre "Bones 601 The mastodon in the room", et les deux sont renommés d'un coup (les extensions sont cachés par défaut sous win).
Il m'a été impossible d'y arrivé sous nunux sad
J'ai vraiment cherché partout, installé des logiciels style GPrename, mais je n'ai rien trouver qui me satifasse pleinement.
Comme je débute, cela n'est pas vraiment étonnant tongue
J'ai donc pensé à un script mais rien trouvé non plus. sad
Y'a t-il  un crack dans la salle pour faire cela? du style:
  -prendre les fichiers
  -clic droit
  -rename "comme je le veux"
et cela sans ce préocuper des extensions
D'avance merci à tous !
PS: Linux est vraiment super, même si je piges pas tout !!:lol:
Me manque encore a apprendre beaucoup de chose, notamment à configurer avidemux pour ne plus avoir de décalage de son quand je ripp ma tv.

Hors ligne

#1187 Le 26/11/2010, à 00:27

Levi59

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

J'ai fait rapidement un petit script. Il répond à ta demande (renommer les avi et srt par 2) mais il ne fait rien d'autre tongue. Tu ne peux sélectionner que 2 fichiers à la fois et il doivent être un avi et un srt,

Tu peux facilement remédier à ca en modifiant ou supprimant certaines parties mais ca sera une bonne façon de t'exercer! Il faut le creer dans:

gedit $HOME/.gnome2/nautilus-scripts/rename

tu y colle ceci:

#!/bin/sh
# Copyright (C) 25 nov. 2010, Rombeaut Rodolphe
# http://scriptam.over-blog.com/
# Released into the public domain.
#
IFS='
'

arg="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
if test $# -ne 2 
   then 
  gdialog --title "Infos" --msgbox "il faut deux fichiers" 200 200
   exit
else 
#   gdialog --title "Infos" --msgbox "nombre d'arguments correct" 200 200
   for i in $arg
      do
      bname=$(basename $i)
      name=${bname%.*}
      ext=${bname##*.}
      if [ "$ext" = "avi" -o "$ext" = "srt" ]
        then
#        gdialog --title "Infos" --msgbox "Fichiers OK, les extensions concordent" 200 200
        echo "ok"
        if [ "$ext" = "avi" ]
           then
           text="$name"
           echo "ok"
        fi
        echo "ok"
        else
        gdialog --title "Infos" --msgbox "Mauvais fichiers, les extensions ne concordent pas" 200 200
        break
      fi
   done
fi

while test -z $newname
do
newname=`gdialog --title "Nouveau nom de fichier" --inputbox "Le fichier avi se nomme $text. Comment voulez-vous nommer les 2 fichiers?" 200 200 2>&1`
if test -z $newname
   then
   if gdialog --title "Pas de nouveau nom" --yesno "Voulez-vous annuler? (non permet de retapper un nom)" 200 200
       then
       exit
   fi
fi
done


for i in $arg
do

bname=$(basename $i)
ext=${bname##*.}
name=${bname%.*}
#   gdialog --title "name" --msgbox "${name}.${ext} ${newname}.${ext}" 200 200
mv -v "${name}.${ext}" "${newname}.${ext}" 
done

et tu rend exécutable:

chmod +x $HOME/.gnome2/nautilus-scripts/rename

Il te suffit ensuite de faire "clic droit/Scripts/rename" sur ta sélection.

Bon je suis pas méchant, propose un correction et je te dirais quoi retirer/modifier si c'est encore necessaire! ^^

Hors ligne

#1188 Le 26/11/2010, à 03:42

jipelft

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

@Levi59
YES smile smile smile
C'est exactement ce que je cherchais !!
T'es trop fort.......  big_smile
Faut vraiment que je me rencarde sur le bash et ces scripts...
Allez hop..on part à la chasse au tuto ..
Encore merci à toi Levi59..
PS: excellent ton blog, hop... mis dans mes favoris tongue

Dernière modification par jipelft (Le 26/11/2010, à 03:56)

Hors ligne

#1189 Le 26/11/2010, à 12:01

nordinatueur

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

Sinon récemment j'ai fait un script qui peut marcher dans les deux sens, il renomme tous les fichiers srt avec les nom des fichiers avi qui sont dans le même dossier, ou l'inverse...

#!/bin/bash
#Couleurs:
rouge='\e[31m'; vert='\e[32m'; jaune='\e[33m'; bleu='\e[34m' ; pourpre='\e[35m'; cyan='\e[36m' gris='\e[37m'; NC='\e[0m';

nomSCRIPT=$(basename $0);

#ln -s avisrt.sh srtavi.sh
if grep -q "avisrt" <<<$nomSCRIPT; then ext_reference=avi; ext_bad=srt;
elif grep -q "srtavi" <<<$nomSCRIPT; then ext_reference=srt; ext_bad=avi;
else exit;
fi;

Usage() 
{
   echo "$nomSCRIPT -[ahv]";
   echo "renomme les fichiers *.$ext_bad en fonction des fichiers *.$ext_reference";
   echo "    -h : Affiche cette aide.";
   echo "    -a : Mode actif, renomme les fichiers $ext_bad.";
   echo "    -c : Mode actif caché, renomme les fichiers $ext_bad et cache les fichiers srt.";
   #echo "    -m : Mode actif visible, renomme les fichiers $ext_bad et montre les fichiers srt.";
   echo "    -v : Mode visuel, montre le résultat. [par défaut]";
   exit 0;
}

option="x$1";
case $option in
"x-a" ) agir=true; cacher=false; echo $vert"Mode actif"$NC;;
"x-c" ) agir=true; cacher=true; echo $vert"Mode actif caché"$NC;;
"x-h" ) Usage;;
*) agir=false; cacher=false; echo -e $vert"Mode visuel"$NC;;
esac;


IFS=$'\n';
for episode in $( ls -1 *.$ext_reference *.$ext_reference.part 2>/dev/null ) ; do

   nom="$(sed -r 's/(.*).'$ext_reference'(.part)?/\1/' <<< "$episode")"

   # type de notation :
   if egrep -iq "s[0-9][0-9]?e[0-9][0-9]?" <<<"$nom"; then
      nS=$(sed -nr 's/.*s([0-9]?[0-9]).*/\1/pI' <<<"$nom" );
      nE=$(sed -nr 's/.*e([0-9]?[0-9]).*/\1/pI' <<<"$nom" );
      
   elif egrep -iq "[0-9][0-9]?[-x][0-9][0-9]?" <<<"$nom"; then
      nS=$(sed -nr 's/.*([0-9]?[0-9])[-x].*/\1/pI' <<<"$nom" );
      nE=$(sed -nr 's/.*[-x]([0-9]?[0-9]).*/\1/pI' <<<"$nom" );
   #Manque le type '101';
   fi;
   #echo $nS :: $nE
   nS=$( sed -r 's/^0*//' <<<$nS ); nE=$( sed -r 's/^0*//' <<<$nE );
   #echo "Episode $nom: Saison $nS: épisode $nE";

   # On cherche un nom de ".srt" contenant les même propriétés saison/épisode
   ancien_nom="$( 2>/dev/null ls *.$ext_bad | egrep -i "(s0?${nS}e0?${nE}|0?${nS}[-X]0?${nE})[^0-9]" || echo 'erreur')"

   #Si la recherche a réussi :
   if [[ $ancien_nom != "erreur" ]]; then
      #Si le ".srt" porte déjà le bon nom, on ne fait rien et en informe l'utilisateur.
      if [[ "$ancien_nom" = $nom".$ext_bad" ]]; then
         echo -e "$jaune$nom$NC déjà effectué...";
      #Sinon on affiche le résultat voulu, et on agit ou non, suivant le mode.
      elif $agir; then
            2>/dev/null mv "$ancien_nom" "$nom.$ext_bad" && echo -e "$jaune$ancien_nom $NC-> $vert$nom.$ext_bad$NC" || echo -e "$rouge  $nom $NC: Echec.";
      else
         echo -e "$rouge$ancien_nom $NC-> $vert$nom.$ext_bad$NC" && echo;
      fi;
   #Sinon la recherche renvoie une erreur et il est impossible d'agir.
   else
      echo -e "Aucun fichier '$jaune$ext_bad$NC' correspondant à '$rouge$nom.$ext_reference$NC'.";
   fi;

   #Si on veut cacher les fichiers srt :
   if $cacher; then mv "$nom.srt" ".$nom.srt" 2>/dev/null && echo "$nom.srt caché"; fi;

done

echo -ne $NC;

Si tu utilises l'option "caché" n'oublie pas l'option « sub-fuzziness=1 » pour mplayer que tu peux mettre dans ~/.mplayer/config, pour qu'il veuille voir un fichier qui n'a pas exactement le même nom.

EDIT : À l'avenir, j'aimerais aussi une reconnaissance du nom de la série, pour éviter les problèmes si plusieurs séries sont dans le même dossier. Voir « agrep » pour des recherches plus souples.

Dernière modification par nordinatueur (Le 26/11/2010, à 12:57)


Linux User #508094
Pour une meilleure coopération, utilisez des liens relatifs sur le forum !

Hors ligne

#1190 Le 26/11/2010, à 19:39

jipelft

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

@nordinatueur
Merci, je testerais, là je ne suis pas devant ma bécane nunux mais sous vista.... donc pas de test possible.

@Levi59
Pas de correction à te demander, c'est ce que je recherchais. Peut-etre manque t-il des commentaires pour que je comprenne bien sont fonctionnement, mais sans plus. lol lol (je plaisante ...)
Ha !! si, une question idiote: Ca veut dire quoi  IFS='  au début du code?
Cordialement à tous deux.

Dernière modification par jipelft (Le 26/11/2010, à 19:40)

Hors ligne

#1191 Le 26/11/2010, à 23:06

Levi59

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

jipelft a écrit :

@Levi59
Pas de correction à te demander, c'est ce que je recherchais. Peut-etre manque t-il des commentaires pour que je comprenne bien sont fonctionnement, mais sans plus. lol lol (je plaisante ...)
Ha !! si, une question idiote: Ca veut dire quoi  IFS='  au début du code?
Cordialement à tous deux.

Pour la correction, c'était au cas ou tu voudrais appliquer à d'autres formats de vidéo, ou à plus de fichiers en meme temps... Mais si ca te convient comme ça ^^

Pour (sur 2 lignes):

IFS='
'

ou « Internal Field Separator », c'est ce qui défini le séparateur de champ (ici le retour à la ligne) nécessaire dans le cas ou on a à traiter plusieurs lignes (ici les 2 nom de fichier). 
Si tu indiques par exemple IFS='a', il découpera ta variable à chaque "a".
Je ne suis plus certain qu'il soit obligatoire dans ce cas mais je préfère l'indiquer quand je fais ce type de traitement.

Hors ligne

#1192 Le 30/11/2010, à 15:57

Kiwi41

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

Salut à tous !

Voici ma petit contrib' dans ce monde de copié collé.

#!/bin/sh
#set -vx

########################################## #
#             remplace.sh    (v2)          #
# Script permettant de remplacer une       #
# expression dans tout les fichiers à      #
# partir répertoire courant.               #
############################################ 

gestion_arg () {
if [ $# -ne 2 ]
then
        echo "Usage : $0 ancien_modtif nouveau_motif"
        exit 1
else
        echo "$0 $*..."
fi
}


gestion_cr () {
if [ $1 -ne 0 ]
then
        echo -e "\033[31m[KO]\033[00m"
else
        echo -e "\033[32m[OK]\033[00m"
fi
}

ouinon () {
echo "Voulez-vous faire : $* ? (oui|non)"
read reponse
case $reponse in
    oui) $* ;;

    non) return 1 ;;

    *) ouinon $* ;;
esac
}

remplace_fic () {
for fic in `find . -type f`
do
        #-- Remplacement dans le fichier
        grep $1 $fic > /dev/null 2>&1
        if [ $? -eq 0 ]
        then
                echo "Remplacement de $1 par $2 dans $fic :"
                ouinon perl -pi -e 's!'$1'!'$2'!g' $fic
                gestion_cr $?
        fi

        #-- Remplacement dans le nom du fichier
        fic_cible=`echo "$fic" | perl -pi -e 's!'$1'!'$2'!g'`
        if [ "$fic" != "$fic_cible" ]
        then
                echo "Rennomage de $fic en $fic_cible"
                ouinon mv $fic $fic_cible
                gestion_cr $?
        fi
done
}


remplace_rep () {
for rep in `find . -type d | sort -r`
do
        #-- Remplacement dans le nom du repertoire
        rep_cible=`echo "$rep" | perl -pi -e 's!'$1'!'$2'!g'`

        if [ "$rep" != "$rep_cible" ]
        then
                if [ -e $rep_cible ]
                        then
                                echo "Attention $rep_cible existe déjà !"
                                gestion_cr 1
                        else
                                echo "Renommage du repertoire $rep en $rep_cible :"
                                ouinon mv $rep $rep_cible
                                gestion_cr $?
                fi
        fi
done
}

remplace_lien () {
for lien in `find . -type l`
do
        #-- Remplacement dans le lien
        ls -l $lien | grep $1> /dev/null 2>&1
        if [ $? -eq 0 ]
        then
                source_lien=`ls -l $lien | awk '{print $11}'`
                source_lien_new=`echo $source_lien | perl -pi -e 's!'$1'!'$2'!g'`
                cible_lien_new=`echo $lien | perl -pi -e 's!'$1'!'$2'!g'`
                echo "Changement du lien $lien -> $source_lien :"
                ouinon ln -snf $source_lien_new $cible_lien_new
                gestion_cr $?
        fi
done
}

gestion_arg $*
remplace_rep $1 $2
remplace_fic $1 $2
remplace_lien $1 $2

Hors ligne

#1193 Le 01/12/2010, à 20:57

TheCaméléon

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

Nautilus script créant un livret A5 (A4 plié en 2) en pdf à partir d'un pdf

Nécessite psutils

#!/bin/bash

for URI in $NAUTILUS_SCRIPT_SELECTED_URIS; do
    URI=$(echo "$URI" | cut -c8- | perl -pe "s/\%([A-Fa-f0-9]{2})/pack('C', hex(\$1))/eg;s/\+/ /sg")
    out=$(echo "$URI" | sed -e 's/\.pdf$//g')"-book.pdf"
    
    w=$(pdfinfo "$URI" | grep "Page size" | grep -oE "[0-9.]+" | sed -n '1p')
    h=$(pdfinfo "$URI" | grep "Page size" | grep -oE "[0-9.]+" | sed -n '2p')
    format=$(pdfinfo "$URI" | grep "Page size" | grep -oE "\([0-9a-Z]+\)" | grep -oE "[^()]+")
    
    if [ -z "$format" ];then
        pdftops "$URI" - | psbook | psnup -2 -W"$w" -H"$h" | ps2pdf - "$out"
    else
        pdftops "$URI" - | psbook | psnup -2 -P"$format" | ps2pdf - "$out"
    fi
done
exit 0

http://www.pictuga.tk/fiche-340.html (pour la version la plus récente)

Dernière modification par TheCaméléon (Le 01/12/2010, à 20:59)

Hors ligne

#1194 Le 03/12/2010, à 19:00

Qid

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

j'aurais une demande à formuler : je voudrais une automatisation de la modification du fichier host ... je m'explique :
à la maison je suis en IP fixe avec un serveur pour lequel j'ai renseigné
ses noms de domaine dans mon fichier host du client pour les utiliser en local
seul probleme ... bah c'est un portable ... et donc dès que je suis en exterieur je suis obligé
de commenté la redirection des noms de domaine vers l'ip local ...
alors ? il y a une possibilité qu'il le face tout seul suivant si je suis connecté en IP fixe ou pas
en gros IPFixe = redirection local effective / DHCP = redirection commenté
merci de votre aide


"GNU/Linux c'est que du bon mais M$ Windows ce n'est pas si mal"
Référent technique d'un Groupe d'Utilisateur du Libre
plus d'info sur mon profil

Hors ligne

#1195 Le 03/12/2010, à 19:05

Levi59

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

Tu peux creer un script qui va commenter ou décommenter automatiquement... Quelques sed et ce sera bon.

Hors ligne

#1196 Le 03/12/2010, à 19:19

Qid

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

Levi59 a écrit :

Tu peux creer un script qui va commenter ou décommenter automatiquement... Quelques sed et ce sera bon.

oui non mais t'es mignon mais si je demande c'est parce que j'y connais rien moi wink
mais je me doute bien que pour certain ici la chose est facile ... c'est bien pour ça que je vous demande wink
alors merci pour votre coopération : si je pouvais le comprendre ce serait sympa aussi wink


"GNU/Linux c'est que du bon mais M$ Windows ce n'est pas si mal"
Référent technique d'un Groupe d'Utilisateur du Libre
plus d'info sur mon profil

Hors ligne

#1197 Le 04/12/2010, à 10:52

Levi59

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

Je ne suis plus sûr des fichiers de conf à modifier donc si tu pouvais me dire exactement quelles sont tes modifications, ça m'aiderait.

Ensuite comme je disais c'est très simple:
-Soit tu utilise Network manager et il faut créer un script générique
sudo gedit /etc/NetworkManager/dispatcher.d/09confip

[PAS DU SCRIPT]
if réseau = tamaison
sed remplacer # par rien à telle ligne
sed remplacer # par rien à telle ligne2
...
else
sed ajouter # à telle ligne
sed ajouter # à telle ligne2
fi

-Si tu utilise wicd c'est plus simple, tu créer juste un script pour dé-commenter avec les sed pour ton domicile et un autre pour commenter pour les autres réseaux, que tu paramètre dans les préférences de réseau, du style

[PAS DU SCRIPT]
#Maison
sed remplacer # par rien à telle ligne
sed remplacer # par rien à telle ligne2
...

J'essaie de te faire travailler un peu surtout qu'il n'y a pas besoin de beaucoup de connaissance pour faire ce script:
-if - else - fi, iwconfig et sed pour la première possibilité
-uniquement sed pour la deuxième.

Tente de faire une première version et je t'aiderais à corriger. Je te filerais même quelques bonus.
Allez, je suis pas méchant, voila le motif générique pour sed:

sed -i 's/motifatrouver/motifderemplacement/g' /chemindu/fichier

si le motif est une variable, il faut mettre '$x' (avec les guillemets simples)

Hors ligne

#1198 Le 04/12/2010, à 22:00

Qid

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

Levi59 a écrit :

J'essaie de te faire travailler un peu surtout qu'il n'y a pas besoin de beaucoup de connaissance pour faire ce script:
-if - else - fi, iwconfig et sed pour la première possibilité
-uniquement sed pour la deuxième.

Tente de faire une première version et je t'aiderais à corriger. Je te filerais même quelques bonus.
Allez, je suis pas méchant, voila le motif générique pour sed:

sed -i 's/motifatrouver/motifderemplacement/g' /chemindu/fichier

si le motif est une variable, il faut mettre '$x' (avec les guillemets simples)

le souci etant que je connais pas dutout sed hmm
par contre ton motif générique à pas l'aire si compliqué ...
mais pour adapté à un scripte ça me laisse perplexe quand meme hmm
j'avoue que je préfèrerais avoir une trame générique pour me l'adapter à mon cas
pour expliquer plus en détaille en faite l'algorithme semble etre celui-ci :

si ip=DHCP
alors
dans /etc/hosts 
supprimer # sur ligne IPServ
sinon
commenter ligne IPServ
finsi

les problemes etant donc :
1) comment repérer le DHCP (ou l'ipfixe suivant le sens)
2) comment commenter ou pas la ligne
3) comment le faire executer avant la connexion
à noter : j'utilise networkmanager voir meme directement le fichier de conf "interface"
merci à toi de t'atarder sur mon cas en tous cas wink


"GNU/Linux c'est que du bon mais M$ Windows ce n'est pas si mal"
Référent technique d'un Groupe d'Utilisateur du Libre
plus d'info sur mon profil

Hors ligne

#1199 Le 04/12/2010, à 22:37

Levi59

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

1) Pour ca déjà il faut que je sache si tu es en Wifi ou en ethernet. Si en wifi, la commande iwconfig suffit:

reseau=`iwconfig wlan0 | grep 'essid:"' | cut -d'"' -f2`
si réseau = wifidomicile
ip fixe...
sinon
dhcp...
fin

2) Je viens de faire un script pour un autre utilisateur du forum qui avait une demande proche de la tienne.
C'est pas lancé automatiquement mais via une option en console.
switch pour serveur LTSP
Le principe du script, c'est qu'il modifie 2 fichiers de configuration: /etc/network/interfaces et /etc/default/dhcp3-server.  "interfaces" contient toutes les infos pour une connexion en ip fixe. Le script commente ou décommente en fonction de l'option. C'est là que ca peut t'aider.

3)Je ne suis pas sûr de l'ordre pour /etc/NetworkManager/dispatcher.d/00tonscript mais on peut toujours essayer! Au pire, un raccourcie dans la barre des taches...

Hors ligne

#1200 Le 04/12/2010, à 23:28

Qid

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

1) oui je suis majoritairement en wifi mais j'aurais souhaité au cas ou
que le scripte gere indifféremment la chose que je sois en wifi ou en ethernet
d'ou le fait que je pensais plutot basé le if sur l'IP

3) bah wai mai si il le fait pas tout seul ça risque de revenir au meme que ce que je fais actuellement : édition manuelle
alors d'accord ça me fait faire un peu moins d'action mais je trouverais dommage qu'on y arrive pas

PS : je vais aller voir ton script deja fait pour voir mais j'ai un peu peur que ce soit quand meme trop différent de ma demande hmm


"GNU/Linux c'est que du bon mais M$ Windows ce n'est pas si mal"
Référent technique d'un Groupe d'Utilisateur du Libre
plus d'info sur mon profil

Hors ligne