Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[débat] Quel langage pour les "quick-hacks" ?
View unanswered posts
View posts from last 24 hours

Goto page Previous  1, 2, 3, 4  Next  
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1889
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Fri May 05, 2006 2:37 pm    Post subject: Reply with quote

TGL wrote:
Grosso modo, ce que j'apprécie, c'est que ça se prête bien à une approche incrémentale. On peut faire des trucs déjà utiles et fonctionnels directement sur la ligne de commande, et c'est comme ça que ça commence en général, avec un simple "one-liner". Parfois ça en reste là (j'en fais juste un alias), et parfois ça grossit parceque je l'améliore petit à petit, et alors, pour l'éditer plus facilement, je le colle dans un fichier et je l'indente. Voilà, un script crade est né.


Pas si crade que ça, j'ai d'ailleurs repris voilà déjà un bon moment une de tes créations, que j'ai un peu modifié pour prendre en compte plusieurs arguments : la fonction bash usedesc(). Sans vraiment le vouloir, j'ai fait un peu de récursivité en bash ;-).

Code:
usedesc () {
        local portdir=$(sed -n 's:^PORTDIR=::p' /etc/make.conf);
        [ -z "$portdir" ] && portdir=/usr/portage;
        [[ ${#} -ge 1 ]] && printf "${__GREEN} ==>> ${__YELLOW}${1}${__GREEN} <<== \n" %s && \
        grep -h "$1.*\ -\ " ${portdir}/profiles/use.* | \
        gawk -F' - ' '{ printf (" \033[32;01m* \033[31;01m%s \033[0;01m- \033[36;01m%s\033[0;0m \n", $1, $2) }'

        if [ ${#} -gt 1 ] ; then
                shift
                echo
                usedesc ${@}
        fi
}

_________________
Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres.
Back to top
View user's profile Send private message
bibi.skuk
Guru
Guru


Joined: 01 Aug 2005
Posts: 425

PostPosted: Fri May 05, 2006 11:16 pm    Post subject: Reply with quote

tiens, 2 lignes de python, a peine testées, en fait, je me suis demandé lors d'une maj si je pouvais avoir la liste des paquets restants a emerger... voila ce qui en est sorti, c'est pas genial, dans le sens ou je ne suis pas sur que ca marche a tous les coups, l'affichage est tres moche (y'en a pour ainsi dire pas du tout), mais bon, si ca peut servir a quelqu'un. j'essayerait de le modifier un peu histoire d'en faire un script utilisable.

mergelist.py:

#!/usr/bin/python

import portage

mergelist = portage.mtimedb["resume"]["mergelist"][:]

for x in mergelist: print x[2]


Oui, je l'avait dit que c'etait basique... (mais ca m'a donné envi de regarder un peu plus attentivement comment fonctionne portage :) )
Back to top
View user's profile Send private message
Trevoke
Advocate
Advocate


Joined: 04 Sep 2004
Posts: 4099
Location: NY, NY

PostPosted: Wed May 10, 2006 4:25 pm    Post subject: Reply with quote

On en est a presque un mois, je dirais que ce thread est epuise, non?
_________________
Votre moment detente
What is the nature of conflict?
Back to top
View user's profile Send private message
yoyo
Bodhisattva
Bodhisattva


Joined: 04 Mar 2003
Posts: 4273
Location: Lyon - France

PostPosted: Thu May 11, 2006 7:49 am    Post subject: Reply with quote

Trevoke wrote:
On en est a presque un mois, je dirais que ce thread est epuise, non?
On est en pleine discussion à ce propos ...
Le prochain devrait arriver incessamment. :roll:
_________________
La connaissance s'accroît quand on la partage.
JCB
Back to top
View user's profile Send private message
Darkael
Veteran
Veteran


Joined: 10 Aug 2004
Posts: 1321
Location: France

PostPosted: Thu May 11, 2006 9:33 am    Post subject: Reply with quote

yoyo wrote:
Trevoke wrote:
On en est a presque un mois, je dirais que ce thread est epuise, non?
On est en pleine discussion à ce propos ...
Le prochain devrait arriver incessamment. :roll:

Pourquoi ne pas juste les faire dans cet ordre?

C'est pas comme si certains sujets étaient meilleurs que d'autres :?
Back to top
View user's profile Send private message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1889
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Thu May 11, 2006 9:50 am    Post subject: Reply with quote

KarnEvil wrote:
Pourquoi ne pas juste les faire dans cet ordre?


Disons, pour faire simple, que nous essayons de privilégier les sujets "à fort potentiel". Mais c'est assez subjectif, c'est vrai ;) !
_________________
Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres.
Back to top
View user's profile Send private message
Trevoke
Advocate
Advocate


Joined: 04 Sep 2004
Posts: 4099
Location: NY, NY

PostPosted: Thu May 11, 2006 12:33 pm    Post subject: Reply with quote

J'veux pas troller, hein, mais "A mort louis croix veh baton".
Comment ca, je sais pas faire autre chose que troller? Non mais dis donc. :oops: Demasque!

Serieusement, allez, je veux apprendre un peu plus moi!
_________________
Votre moment detente
What is the nature of conflict?
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2383
Location: ~Belfort! - France - EU

PostPosted: Fri May 12, 2006 7:44 am    Post subject: Reply with quote

Bonjour,

alors pour moi c'est la première fois que je me mets à ces petits scipts qui rendent la vie plus facile. J'ai donc récupérer un premier squelette d'un script bash pour de la sauvegarde de données. Je fais donc un tar, puis un tar --diff ou compare (c'est là que j'aimerais un coup de main, en effet je ne sais pas récuper les alertes qui en découlent afin de stopper l'opération de transfert qui est censée suivre) puis je transfert avec smbclient :
Code:

#!/bin/bash

        # Crée une sauvegarde compressée de tous les répertoires spécifiés et stocke
        # le fichier en résultant dans un répertoire de votre choix.

        #SAUVE_REP="$HOME /etc /var"

        SAUVE_REP_PERSO="/home/mickael/Articles /home/mickael/Presentation /home/mickael/Publications_Personnelles"

        #NOM_SAUVEGARDE=`date '+%b%d%Y'`
        NOM_SAUVEGARDE="Backup.tar.gz"

        SAUVEGARDE_DEST_REP="/home/mickael/Gentoo/Backup"

        # Décommentez la ligne suivante pour obtenir une sauvegarde GZippée,
        # commentez pour une sauvegarde BZippée

        echo "Compression des dossiers avant transfert"
        tar czfP $SAUVEGARDE_DEST_REP/$NOM_SAUVEGARDE $SAUVE_REP_PERSO

        echo "Comparaison de l'archive avec les répertoires courants..."
        #tar --diff --verbose --file=$SAUVEGARDE_DEST_REP/$NOM_SAUVEGARDE $SAUVE_REP_PERSO
        tar --diff  --file=$SAUVEGARDE_DEST_REP/$NOM_SAUVEGARDE $SAUVE_REP_PERSO /home/mickael/Gimp/
(ici j'ai rajouter un répertoire que je ne sauvegarde pas afin d'avoir une comparaison avec erreur!

        # Nous créons une archive BZippée...
        # Commentez la ligne suivante pour une archive GZippée,
        # décommentez pour une archive BZippée

        #tar cjf $SAUVEGARDE_DEST_REP/$NOM_SAUVEGARDE.tar.bz2 $SAUVE_REP


        # Connexion avec LAB-SERVEUR
        echo "Sauvegarde en cours sur le serveur..."
        echo "Vous pouvez prendre un café..."
        smbclient "//X.X.X.X/Sauvegardes" -U xxx%xxxx -D xxxxx/backup -c 'put /home/mickael/Gentoo/Backup/Backup.tar.gz Backup.tar.gz'


voili voilà, c'est pas encore dans cron, mais le petit grandi. :wink:

PS : j'oubliais de vous montrer une alerte :
Quote:
./Gentoo/Backup/save.sh
Compression des dossiers avant transfert
Comparaison de l'archive avec les répertoires courants...
tar: /home/mickael/Gimp: ne peut être retrouvé dans l'archive.
tar: Statut d'erreur reporté d'erreurs précédentes.

Sauvegarde en cours sur le serveur...
Vous pouvez prendre un café...
Domain=[LAB-SERVEUR] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
putting file /home/mickael/Gentoo/Backup/Backup.tar.gz as \xxxx\backup\Backup.tar.gz (888.2 kb/s) (average 888.2 kb/s)
Sauvegarde Terminée !


PSS : Pourquoi ce langage : et bien je sais pas, la première fois c'était du bash également je n'ai fait que recopier un script pour ma carte pcmcia. De plus, les exemples trouvés sur le net pendant mes recherches étaient également en bash, et je le trouve assez simple ou plutôt il me semble accessible pour moi.
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2383
Location: ~Belfort! - France - EU

PostPosted: Fri May 12, 2006 1:37 pm    Post subject: Reply with quote

Juste une petite évolution de script pour sauvegarde.

Afin d'avoir une archive tar datée j' ai donc modifier ceci :
Code:
 NOM_SAUVEGARDE=`date '+%b.%d.%Y'.tar.gz`

Jusque là vous me direz rien de bien méchant, certe, mais le problème c'est que smbclient lui il aime bien les noms de fichiers soient correctement arrêtés, en gros on peut pas mettre $NOM_SAUVEGARDE à la fin du "put" (put est une option de smbclient). Donc l'astuce est d'utiliser les mask et mput ce qui donne :
Code:

cd $SAUVEGARDE_DEST_REP

# Connexion avec LAB-SERVEUR
        echo "Sauvegarde en cours sur le serveur..."
        echo "Vous pouvez prendre un café..."
        smbclient "//x.x.x.x/xxxxxx" -U x%xxxxx -D xxxx/backup -c "mask /home/mickael/Gentoo/Backup/TEST/*.2006.tar.gz ;  mput *.2006.tar.gz"


Voui, vous me dite que si vendredi prochain je fais une sauvegarde, il va de nouveau me transférer celui d'aujourd'hui, mais rien ne nous empêche de déplacer ce dernier avec un mv!.
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
AigleFR
n00b
n00b


Joined: 27 Nov 2005
Posts: 25

PostPosted: Tue May 16, 2006 8:22 pm    Post subject: Reply with quote

Code:

### A savoir: ce script se connecte automatiquement au reseau wifi detecte (s'il est configure).

### Le script cherche d'abord dans le fichier des reseaux prioritaires (on y classe les réseaux par nom ESSID et par ordre de priorité)
### Si il ne trouve aucun reseau prioritaire, il cherche dans le dossier qui contient tous les reseaux configurer, et là il se connecte au premier qu'il trouve.

### Dans le dossier des fichiers de configurations de tous les reseaux auxquels on peut se connecter, il faut mettre comme nom de fichier,
### celui de son ESSID (ex: si mon ESSID est Wanadoo_1234, le fichier s'appelera Wanadoo_1234)

### Il peut etre pratique de mettre un lien dans /sbin vers le répertoire ou se trouve le script
### (ex: dans /sbin un lien appelle wifi qui point vers /home/tux/script/script_connection_wifi)
### Ainsi, il suffira de lancer par exemple la commande wifi pour lancer le script.

#!/bin/bash

######## ICI se trouve la configuration du script ########

connectdefaut="/home/utilisateur/script/wifi/defaut.conf"     #fichier de config par defaut
connectprio="/home/utilisateur/script/wifi/prio.conf"         #fichier contenant les ESSID prioritaires
dossres="/home/utilisateur/script/wifi/config/*"              #dossier ou se trouve les fichiers de config
dossres2="/home/utilisateur/script/wifi/config/"              #dossier ou se trouve les fichiers de config

ipdef="192.168.1.51"    #adresse ip par defaut si dhcpcd echou ou si on prefere utilise une ip statique pour se connecter
ippass="192.168.1.1"     #adresse ip de la passerelle (exemple 192.168.1.1 pour une livebox)
inter="eth1"             #interface reseau wifi
driver="ipw2200"         #driver de la carte wifi

wifires="/home/utilisateur/script/wifi/wifires"            #pour mettre les reseaux trouves
wifirestmp="/home/utilisateur/script/wifi/wifirestmp"      #pour faire une petite transformation
wifirestmp2="/home/utilisateur/script/wifi/wifirestmp2"    #pour faire une petite transformation

############################################################


##### Commande a lancer en tout premier #####

echo " "

#############################################
#############################################

test() {

if lsmod | grep "$driver" > /dev/null
    then
         echo " * Driver OK"
     else
         echo " * Driver $driver non trouvé"
         echo "   * Lancement du driver"       
        if modprobe "$driver"                  
           then                    
                echo "     * Driver $driver lance"
      sleep 2
           else
                echo "     * Impossible de lancer le driver $driver"
      exit
        fi
    fi

scanres=$(iwlist "$inter" scanning | grep ESSID)

stop-wpa > /dev/null
stop-dhcpcd > /dev/null
}

#############################################

scan() {

echo " * Detection des reseaux actifs"
sleep 2      
if [[ ! $scanres ]]
  then
    echo "   * Aucun reseau detecte"
    exit
  else
    echo > "$wifires"
    echo > "$wifirestmp2"   

    echo "${scanres}" > "$wifirestmp"
   
    for anter in $(cat "$wifirestmp")
      do
        echo "$anter" >> "$wifirestmp2"
   echo $(cut --delimiter='"' -f2 "$wifirestmp2") >> "$wifires"
      done

    echo -n "   * Reseaux detectes : "
    echo $(cat "$wifires")
fi
}

#############################################

auto() {
      
echo " * Connection au reseau"
      
for wifitrouv in $(cat "$wifires")
  do
   
    for wifirechdef in $(cat "$connectprio") #recherche d'abord une connection dans le fichier de config prioritaire     
      do     
        if [ "${wifirechdef##*/}" = "$wifitrouv" ]
          then
       config="$dossres2""$wifirechdef"
       connect
   fi
      done    
    echo "   * Aucun reseaux prioritaire trouves"

    for wifirech in $dossres #recherche ensuite dans le dossier des fichiers de config      
      do
        if [ "${wifirech##*/}" = "$wifitrouv" ]
          then
       config="$wifirech"
       connect
       exit      
        fi
      done
  done

echo " "
echo " * ERREUR: Aucun fichier de configuration ne correspond au reseau trouve"
      
exit
}

#############################################

connect() {

echo " * Debut de la connection"

connect-wpa
connect-dhcp
}

############################################

connect-wpa() {

echo "   * Connection au reseau : "${config##*/}" "

echo "   * Lancement de wpa_supplicant ... " 
if [[ $(wpa_supplicant -Dwext -ieth1 -c"$config" -B -w) ]]
  then
    echo " "
    echo "   * ERREUR: Impossible de lancer wpa_supplicant"
    exit
fi
}

#############################################

connect-dhcp() {

##Si on ne veut pas utiliser une ip automatique avec dhcpcd, il faut commenter cette partie, ainsi que le "fi" indiqué
##Ensuite il faut commenter tous les stop-dhcpcd, sauf la fonction stop-dhcpcd()

###############################################################################
echo "   * Lancement de dhcpcd ... "                     #
if dhcpcd "$inter"                           #   
  then                                 #
    echo " * Connection termine"                     #
    sleep 1                              #
    clear                              #
    exit                              #
  else                                 #
    echo " "                              #
    echo "   * ERREUR: Impossible de lancer dhcpcd"               #
    echo " "                              #
###############################################################################     
   
    echo "     * Connection avec une ip statique : $ipdef "           

    if [[ $(ifconfig "$inter" "$ipdef") ]]
      then
        echo "       * ERREUR: Connection avec une ip statique impossible"
   exit
      else
   echo "       * Connection avec une ip statique etablie"         
    fi
   

    if [[ $(route add default gw "$ippass") ]]
      then
        echo "       * ERREUR: Erreur lors de la specification de la route"
   exit
      else
   echo "     * Etablissement de la route par defaut"
   echo " * Connection termine"
        sleep 2
        clear
        exit         
    fi
         
fi ## Commenter ici aussi pour ne pas utiliser dhcpcd
}

#############################################

stop-dhcpcd() {

if [[ $(start-stop-daemon --stop --name dhcpcd) ]]
  then
    echo " * Le service dhcpcd est deja arrete"
  else
    echo " * Arret du service dhcpcd"   
fi
}

#############################################

stop-wpa() {
      
if [[  $(start-stop-daemon --stop --name wpa_supplicant) ]]
  then
    echo " * Le service wpa_supplicant est deja arrete"
  else
    echo " * Arret du service wpa_supplicant"
fi      
}

#############################################
#############################################

case $1 in

   start) #pour se connecter a la config de defaut
      test
      config="$connectdefaut"
      connect
      ;;

   stop)
      stop-wpa
      stop-dhcpcd
      ;;

   auto)
      test
      scan
      auto
      ;;

   restart)
      stop-wpa
      stop-dhcpcd
      test
      scan
      auto
      ;;

   force) #pour specifier le chemin et le nom du fichier de config (ex: wifi force /home/tux/script/config/Wanadoo_1234 )
      test
      config="$2"
      connect
      ;;
   scan)  #pour detecter seulement les reseaux sans s'y connecter
      test
      scan
      exit
      ;;
   *)
      if [ ! $1 ] # Si aucune option, on lance auto par defaut
         then
            test
            scan
            auto
      fi

      echo " "
      echo " * ERREUR : Commande inconnue"
      exit
      ;;
esac


En gros, c'est un script qui permet de se connecter automatiquement avec wpa_supplicant sur réseau wifi qui est détecté (à condition que se réseau soit déjà configurer).
C'est pratique quand on doit se connecter sur différent réseaux wifi à différent endroit.

Je pense q'on peut facilement améliorer le script et aussi rajouter des fonctions.


PS: Désolé pour la taille du script ... et j'espère qu'il sera utile a quelqu'un.
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2383
Location: ~Belfort! - France - EU

PostPosted: Mon May 22, 2006 7:55 am    Post subject: Reply with quote

Bonjour,

toujours dans la continuité de mon petit script bash pour faire de la sauvegarde, j'ai un petit problème avec tar et la redirection des erreurs dans un fichier intitulé erreurs.log :

Code:
echo "Comparaison de l'archive avec les répertoires courants..."
        tar --diff  --file=$SAUVEGARDE_DEST_REP/$NOM_SAUVEGARDE $SAUVE_REP_PERSO $REPERTOIR_TESTING > $ERREURS_LOG


Mon problème est qu'il ne va jamais écrire dans ce fichier représenté ici par la variable $ERREURS_LOG. Afin d'avoir des erreurs, j'ai rajouté un répertoire/fichier définit par $REPERTOIR_TESTING. Dans une console, il me dit bien que dans l'archive tar, il n'y a pas les fichiers qui appatiennent à $REPERTOIR_TESTING, mais le fichier erreurs.log lui est vide, désespérément vide...

Elle est où la boulette s'il vous plaît?
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
Oupsman
Veteran
Veteran


Joined: 19 Jul 2004
Posts: 1042

PostPosted: Mon May 22, 2006 8:10 am    Post subject: Reply with quote

Ta redirection n'est pas bonne, tu ne rediriges que la sortie standard, pas la sortie d'erreur.

Essaye ceci :

Code:

echo "Comparaison de l'archive avec les répertoires courants..."
        tar --diff  --file=$SAUVEGARDE_DEST_REP/$NOM_SAUVEGARDE $SAUVE_REP_PERSO $REPERTOIR_TESTING 2> $ERREURS_LOG


Perso, dans mes scripts je fais :

Code:

commande > fichier.log 2>&1

pour rediriger la sortie d'erreur vers la sortie standard
_________________
--
L'idéal de nouveauté semble avoir remplacé l'idéal de progrès. C'est bien triste.

----
Unix philosophy: "Do one thing and do it well."
systemd: "Try to do everything and do it wrong."
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2383
Location: ~Belfort! - France - EU

PostPosted: Mon May 22, 2006 8:15 am    Post subject: Reply with quote

Merci Oupsman, je test de suite et je me renseignerai par rapport à ta technique des 2>&1.

EDIT : Merci, cela fonctionne maintenant. Alors jevous montre la toute petite évolution de mon script :
Code:

#!/bin/bash

clear

        SAUVE_REP_PERSO="/home/mickael/Articles /home/mickael/Presentation /home/mickael/Publications_Personnelles"
        NOM_SAUVEGARDE=`date '+%b.%d.%Y'.tar.gz`
        SAUVEGARDE_DEST_REP="/home/mickael/Gentoo/Backup/TEST"
        ERREURS_LOG="/home/mickael/Gentoo/Backup/TEST/erreurs.log"
        REPERTOIR_TESTING="/home/mickael/Conneries"
        > $ERREURS_LOG


        # Décommentez la ligne suivante pour obtenir une sauvegarde GZippée,
        echo "Compression des dossiers avant transfert"
        tar czfP $SAUVEGARDE_DEST_REP/$NOM_SAUVEGARDE $SAUVE_REP_PERSO
        echo "Comparaison de l'archive avec les répertoires courants..."
        tar --diff  --file=$SAUVEGARDE_DEST_REP/$NOM_SAUVEGARDE $SAUVE_REP_PERSO $REPERTOIR_TESTING 2> $ERREURS_LOG

        if test -s '/home/mickael/Gentoo/Backup/TEST/erreurs.log';
                then
                        echo    "               $(color ltyellow red)RAPPORT DE L'OPÉRATION$(color off)"
                        echo    "$(color ltyellow red)!ERREUR/ Les fichiers suivants sont absents de l'archive :$(color off)"
                        cat < $ERREURS_LOG
                        exit
                else
                        echo  "********************************"
                        echo  "*        $(color ltgreen black)RAPPORT DE L'OPÉRATION$(color off)*"
                        echo  "*          $(color ltgreen black)Archive réussie$(color off)     *"
                        echo  "********************************"

                        # Déplacement dans le fichier de sauvegarde
                        cd /home/mickael/Gentoo/Backup/TEST/

                        # Connexion avec LAB-SERVEUR
                        echo "Sauvegarde en cours sur le serveur..."
                        echo "Vous pouvez prendre un café..."

                        smbclient "//xxxxxx/Doctorants" -U xxxxx%xxxxx -D mparis/backup -c "mask /home/mickael/Gentoo/Backup/TEST/*.2006.tar.gz ;  mput *.2006.tar.gz"

                        # Une petite phrase.
                        echo "Sauvegarde Terminée !"
        fi
                        # On vire la sauvegarde du PC perso :
                        rm $NOM_SAUVEGARDE


EDIT 2 : Ta technique Oupsman, est plus intéressante car en plus d'avoir que les erreurs j'ai également la sortie standard. Ce 2>&1 concatène la sortie d'erreurs sur la sortie standard, mais je crois que dans mon cas, vu la boucle qui suit ce tar --diff, je vais conserver que la redirection de la sortie d'erreurs. Merci encore pour l'info. :wink:
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
Oupsman
Veteran
Veteran


Joined: 19 Jul 2004
Posts: 1042

PostPosted: Mon May 22, 2006 8:35 am    Post subject: Reply with quote

:arrow: ce lien peut être utile : http://abs.traduc.org/abs-3.7-fr/io-redirection.html
_________________
--
L'idéal de nouveauté semble avoir remplacé l'idéal de progrès. C'est bien triste.

----
Unix philosophy: "Do one thing and do it well."
systemd: "Try to do everything and do it wrong."
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2383
Location: ~Belfort! - France - EU

PostPosted: Mon May 22, 2006 9:16 am    Post subject: Reply with quote

J'ai une question d'ordre générale, qui je pense intéresserait beucoup de débutants lorsqu'ils se lancent dans l'écriture de petits scripts. Comment fait-on, (ou peut-être Où trouver cette info) pour dire au script de ce lancer que si une carte pcmcia est présente par exemple, et par corrolaire de s'arrêter si elle ne s'y trouve plus? Vous voyez ce que je veux dire?

En fait ma question est double, mais ce que je ne sais pas c'est où trouver l'info qui me dira que la carte pcmcia est bien présente.


Merci.


EDIT : Je pensais à la commande tail, mais le problème c'est que mon fichier dmesg ou message n' a jamais été éffacé donc il contient beaucoup de lignes, donc le script peut être dupé par une info périmée...oui/non/peut-être.
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo


Last edited by Mickael on Mon May 22, 2006 11:42 am; edited 1 time in total
Back to top
View user's profile Send private message
kaworu
Guru
Guru


Joined: 07 Dec 2005
Posts: 450

PostPosted: Mon May 22, 2006 11:32 am    Post subject: Reply with quote

au risque de dire une erreur :
ça crée un événement acpi d'insérer ou enlever une carte PCMCIA non?
Si c'est le cas, c'est très simple ^____^

mes 2 cents..
_________________
Macbook
Core2Duo @ 2.0GHz - 1Go RAM - HD 80Go - Intel GMA 945

Gentoo GNU/Linux
~amd64 - 2.6.24-gentoo-r2 - Fluxbox || (KDE && Compiz-Fusion)
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2383
Location: ~Belfort! - France - EU

PostPosted: Mon May 22, 2006 11:38 am    Post subject: Reply with quote

kaworu wrote:
au risque de dire une erreur :
ça crée un événement acpi d'insérer ou enlever une carte PCMCIA non?


Je le vois comme cela, et si je dis pas de bêtises, on retrouve cette info dans le fichier dmesg/messages (je sais plus :oops: ) mais cette dernière info peut être suivie au cours d'une journée par plusieurs infos, sans compter que ces deux fichiers n'ont jamais été néttoyés/vidés!!!! donc le script ou la commande appropriée peut être bernée par un vieux log?? :?
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
Oupsman
Veteran
Veteran


Joined: 19 Jul 2004
Posts: 1042

PostPosted: Mon May 22, 2006 11:46 am    Post subject: Reply with quote

Question con : et en passant par le trio dbus/hal/ivman ?
_________________
--
L'idéal de nouveauté semble avoir remplacé l'idéal de progrès. C'est bien triste.

----
Unix philosophy: "Do one thing and do it well."
systemd: "Try to do everything and do it wrong."
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2383
Location: ~Belfort! - France - EU

PostPosted: Mon May 22, 2006 11:47 am    Post subject: Reply with quote

Oupsman wrote:
Question con : et en passant par le trio dbus/hal/ivman ?


OK mais comment?????? em même temps mon trio c'est : dbus/hal/gvm
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
Oupsman
Veteran
Veteran


Joined: 19 Jul 2004
Posts: 1042

PostPosted: Mon May 22, 2006 11:58 am    Post subject: Reply with quote

MickTux wrote:
Oupsman wrote:
Question con : et en passant par le trio dbus/hal/ivman ?


OK mais comment?????? em même temps mon trio c'est : dbus/hal/gvm

Après réflexions, je ne sias pas si mon trio est le bon :oops: :oops: :oops:
_________________
--
L'idéal de nouveauté semble avoir remplacé l'idéal de progrès. C'est bien triste.

----
Unix philosophy: "Do one thing and do it well."
systemd: "Try to do everything and do it wrong."
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2383
Location: ~Belfort! - France - EU

PostPosted: Mon May 22, 2006 12:01 pm    Post subject: Reply with quote

Pourquoi? il est bon ton trio, ivman gvm et autres c'est une question de choix, d'indépendance et je ne sais quoi.
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2383
Location: ~Belfort! - France - EU

PostPosted: Mon May 22, 2006 4:32 pm    Post subject: Reply with quote

Bon, alors je viens de lire quelques infos (voir ici) sur la toile et je dirais que udev suffirait à notre bonheur :

1 : insertion du périférique, sans rien toucher à udev, sa config etc...
2 : vérification dans /var/log/syslog du ou des périfériques créés par udev.
3 : c'est udevinfo qui va nous fournir le chemin complet dans /sys dans lequel ontrouvera toutes les infos relatives à notre périférique.

4 : Un extrait de dmesg avec l'insertion de ma carte, @Kaworu : on a bien l'événement acpi mais est-il écrit ailleurs :
Quote:
pccard: card ejected from slot 0
ndiswrapper: device wlan0 removed
ACPI: PCI interrupt for device 0000:03:00.0 disabled
pccard: CardBus card inserted into slot 0
ndiswrapper: driver lsbcmnds (The Linksys Group, Inc.,07/17/2003, 3.30.15.0) loaded
PCI: Enabling device 0000:03:00.0 (0000 -> 0002)
ACPI: PCI Interrupt 0000:03:00.0[A] -> GSI 17 (level, low) -> IRQ 177
PCI: Setting latency timer of device 0000:03:00.0 to 64
ndiswrapper: using irq 177
wlan0: vendor: ''
wlan0: ndiswrapper ethernet device 00:12:17:b3:6e:6a using driver lsbcmnds, 14E4:4320.5.conf
wlan0: encryption modes supported: WEP; TKIP with WPA; AES/CCMP with WPA



5 : Je crois bien que udev suffira à notre bonheur si pcmciautils à été compilé pour communiqué avec udev. Si j'ai bien compris la documentation, par défaut c'est udev qui se chage du boulot.

6 : Une solution : utilisée la réponse de la commande pccardctl status : exemple sans carte insérée :
Code:
Socket 0:
  no card

_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo


Last edited by Mickael on Tue May 23, 2006 3:10 pm; edited 2 times in total
Back to top
View user's profile Send private message
olivier elmekki
n00b
n00b


Joined: 29 Jan 2006
Posts: 55

PostPosted: Tue May 23, 2006 1:16 pm    Post subject: Reply with quote

Bonjour,

ma petite contributions à ce thread qui mérite d'avoie la vie longue...

Il s'agit d'un script permettant de trier les fichiers mp3 d'un répertoire suivant l'une de ses balises, en les plaçant dans un répertoire du nom de la valeur de la balise choisie.

J'ai choisi ruby car c'est mon langage usuel. C'est vrai que ces 'quick-hacks' ne permettent pas trop d'utiliser le modèle orienté-objet de ruby, mais comme un autre de ses atouts est la concision et qu'il permet tout de même de faire de la programmation impérative, je le préfère généralement à bash (qui reste pourtant, selon moi, un modèle de langage intégré à un systême).

A noter que pour faire tourner ce script, il faut bien sûr l'interpréteur ruby, mais aussi le module mp3info (dev-ruby/ruby-mp3info).
Code:

#!/usr/bin/env ruby
require 'mp3info'
require 'fileutils'

case ARGV[0]
when 'artist', 'genre', 'comments', 'title', 'album', 'tracknum'
    Type_tri = ARGV[0]

else
    puts "\
synopsis: tri_mp3.rb type_tri [chemin]

où type_ tri peut être, au choix:
    artist, genre, comments, title, album, tracknum

tri_mp3 permet de classer des fichiers musicaux en les placant dans un répertoire suivant un critère commun que vous
aurez choisi, sur la base d'une balise mp3.
  Si 'chemin' n'est pas spécifié, tri_mp3.rb sera lancé dans le répertoire courant."

end
chemin = ARGV[1]
if chemin != nil and File.directory?( chemin )
    chemin += '/' if chemin[/\/$/] == nil
    repertoire = Dir.new( chemin )
else
    repertoire = Dir.new( './' )
end

str_rep = repertoire.path

repertoire.each { |fichier|
    if File.extname( fichier ) == '.mp3'
        f_mp3 = Mp3Info.new( fichier )
        balise = f_mp3.tag[ Type_tri ]
        balise = f_mp3.tag2['TCON'] if Type_tri == 'genre' and balise == nil
        balise = 'inconnu' if balise == nil
        Dir.mkdir( str_rep + balise ) if not File.exist?( str_rep + balise )
        FileUtils.mv( str_rep + fichier, str_rep + balise + '/' + fichier )
    end
}
Back to top
View user's profile Send private message
Mickael
Advocate
Advocate


Joined: 05 Sep 2005
Posts: 2383
Location: ~Belfort! - France - EU

PostPosted: Thu Dec 14, 2006 10:48 am    Post subject: Reply with quote

J'ai une petite question pour les utilisateurs de sed. JE suis en train de faire mumuse, avec sed suite à ce poste, mais également à une demande sur la section portage du forum. Un utilisateur y demande si il était possible de gérer les flags USE par catégories dans etc-portage.package.use avec une écriture particulière, la réponse est pour le moment non. Mais il est possible de faire un petit script, genre on commence par retrouver dans une catégorie tous les ebuilds qui ont la variable USE doc, puis avec sed, on récupère que le début de la sortie de la première commande que l'on ira écrire dans etc/portage.use.

Commande 1 :

trouver dans /usr/portage/dev-ruby, tous les ebuilds qui ont la variable doc :
Code:
find ./dev-ruby/ -name '*.ebuild' -exec grep -ni 'IUSE="*doc*"' {} /dev/null ';'
./dev-ruby/mod_ruby/mod_ruby-1.2.4-r2.ebuild:13:IUSE="doc"
./dev-ruby/mod_ruby/mod_ruby-1.2.4-r1.ebuild:13:IUSE="doc"
./dev-ruby/fxruby/fxruby-1.2.6.ebuild:16:IUSE="doc"


Ok, si on redirige tout ceci dans un fichier test, placé dans home, on peut alors faire mumuse avec sed. Mais mon problème est que pour le moment je n'arrive pas à récupérer tout ce qui se trouve entre ./dev-ruby/mod_ruby/ et virer tout ce qui suit, par exemple. pour ensuite aller écrire ceci dans etc/portage/package.use...

Comment fait on svp?

Commande sed 2 :
celle-ce ne va pas :
Code:
sed -n -e 's/ *[/]//p' /home/mickael/test
mod_rubymod_ruby-1.2.4-r2.ebuild:13:IUSE="doc"
mod_rubymod_ruby-1.2.4-r1.ebuild:13:IUSE="doc"
fxrubyfxruby-1.2.6.ebuild:16:IUSE="doc"


Il faudrait que je remplace l'option p par g, mais les / m'emmerde...
_________________
À LIRE : COMMENT POSTER ET OBTENIR DE L'AIDE ?
Qui suis-je ? Bon j'ai relu, comme d'habitude, je suis bon a rien le vendredi
Qui suis-je ? Je ne serai jamais modo
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3772
Location: Wellington, Aotearoa

PostPosted: Thu Dec 14, 2006 10:52 am    Post subject: Reply with quote

Ça ne marchera pas avec tous les ebuilds, parce que certains ont leurs USE depuis les eclass dont ils héritent.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Goto page Previous  1, 2, 3, 4  Next
Page 3 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum