mar 01 2011

Mise a jour photos VTT

Tag: VTTUggla @ 22 h 16 min

Et voila, j’ai remis à jour ma galerie de façon massive avec  l’ensemble des photos de VTT de la saison précédente jusqu’à aujourd’hui.
De cette manière je vais essayer de faire un suivi plus régulier des sorties.

La galerie :

http://uggla.free.fr/phpwebgallery/index.php?/category/1


mar 01 2011

Gestion des espaces dans les boucles « for » avec IFS

Tag: ScriptsUggla @ 14 h 17 min

Une astuce pour gérer les espaces dans les boucles « for » en shell (bash, ksh).
Rien ne vaut un petit exemple pour montrer le problème :

root@hx04970: /root/home/root/nene # ll
total 0
-rw-r--r--   1 root       sys              0 Feb 28 14:09 1
-rw-r--r--   1 root       sys              0 Feb 28 14:09 2
-rw-r--r--   1 root       sys              0 Feb 28 14:09 3
drwxr-xr-x   2 root       sys             96 Feb 28 12:04 tata tutu
drwxr-xr-x   2 root       sys             96 Feb 28 12:03 titi
drwxr-xr-x   2 root       sys             96 Feb 28 12:03 toto

Imaginons que je fasse une boucle sur l’ensemble des fichiers de l’arborescence ci dessus.

root@hx04970: /root/home/root/nene # for i in *;do echo $i;done
1
2
3
tata tutu
titi
toto

Ici tout se passe bien, pas de problèmes, le répertoire « tata tutu » est bien interprété.

Maintenant je complique un peu en voulant faire une boucle sur les répertoires seulement :

root@hx04970: /root/home/root/nene # for i in $(find . -type d);do echo $i;done
.
./toto
./titi
./tata
tutu

Et la c’est le drame :) .

L’espace sur le répertoire « tata tutu » est vu comme un séparateur et le shell croit que nous avons 2 répertoires tata et tutu.
Le bon administrateur Unix sait qu’il faut éviter les espaces c’est mal. (C’est comme : on ne croise jamais les effluves : c’est mal –> cf Ghostbuster).

Cool ! Mais si le répertoire est un share cifs avec des utilisateurs de windows, il y a de grande chance que l’on retrouve plein d’espaces dans les noms de fichier.

La meilleure méthode de résolution du problème ci dessus est d’utiliser la « variable » IFS.
Un petit man ksh me donne :

IFS Internal field separators, normally space, tab,
and newline that are used to separate command
words resulting from command or parameter
substitution, and for separating words with the
special command read. The first character of the
IFS parameter is used to separate arguments for
the « $* » substitution (see Quoting below).

IFS est la « variable » qui définie le séparateur, par défaut espace, tab et nouvelle ligne.

En redéfinissant le séparateur, sans l’espace et le tab on obtient :

root@hx04970: /root/home/root/nene # IFS=$'\n' && for i in $(find . -type d);do echo $i;done
.
./toto
./titi
./tata tutu

Le problème est résolu.

Pour aller plus loin : http://tldp.org/LDP/abs/html/internalvariables.html#IFSH


mar 01 2011

Passer une base Oracle en archivelog mode.

Tag: DBUggla @ 14 h 15 min

Truc de base, mais j’arrive jamais à me souvenir….

  1. Vérifier l’etat de la base.
    SQL> select name,log_mode from v$database;
    
    NAME      LOG_MODE
    --------- ------------
    MODEFRR1  NOARCHIVELOG
    
  2. Définir la destination des archives.
    SQL> alter system set log_archive_dest_1='location=+DCLICDGR' scope=both sid='*';
    System altered.
    
    SQL> show parameter log_archive_dest_1
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    log_archive_dest_1                   string      location=+DCLICDGR
    log_archive_dest_10                  string
    ...
    
  3. Arrêt de la base.
    $ srvctl stop database -d MODEFRR1
    
  4. Passage en mode archive.
    $ sqlplus / as    sysdba
    
    SQL*Plus: Release 11.2.0.2.0 Production on Tue Mar 1 12:03:41 2011
    
    Copyright (c) 1982, 2010, Oracle.  All rights reserved.
    
    Connected to an idle instance.
    
    SQL> startup mount
    ORACLE instance started.
    
    Total System Global Area 1068937216 bytes
    Fixed Size                  2188072 bytes
    Variable Size             683674840 bytes
    Database Buffers          377487360 bytes
    Redo Buffers                5586944 bytes
    
    SQL> alter database archivelog;
    
    Database altered.
    
    SQL> alter database open;
    
    Database altered.
    
  5. Démarrage 2eme instances.
    $ srvctl start database -d MODEFRR1
    
  6. Vérification.
    SQL> archive log list
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            +DCLICDGR
    Oldest online log sequence     4
    Next log sequence to archive   5
    Current log sequence           5
    
  7. Commande (que j’oublie à chaque fois) pour générer des logs.
    SQL> alter system archive log current;
    
    System altered.
    
    SQL> alter system switch logfile;
    
    System altered.
    

mar 01 2011

Ajouter un group à un utilisateur (hpux)

Tag: UnixUggla @ 11 h 10 min

Petite astuce pour hpux.

La commande usermod de hpux n’a pas de fonction append comme sous Linux.

L’ajout d’un group a un utilisateur oblige a redéfinir entièrement l’utilisateur.

La « commande » ci dessous simplifie cette opération :

account=grid && newgrp=dclicdba && echo "usermod -g $(id -g $account) -G $(id -G $account | sed 's/ /,/g'),$newgrp $account"

Résultat :

usermod -g 107 -G 107,108,109,110,111,112,114,dclicdba grid

Plus qu’a exécuter la ligne ci dessus pour ajouter le groupe.
Si le login est deja utilisé, alors il faut ajouter l’option -F –> usermod -F -g 107 -G 107,108,109,110,111,112,114,dclicdba grid