GAILLARD

Juin 142011
 

il peut être plus efficace de copier une arborescence avec tar qu’avec cp, quoique le must étant encore d’utiliser rsync.

bref, voici comment faire avec tar:

$ cd source_dir
$ tar cf - . | ( cd destination_dir ; tar xf - )

le tirêt « – » indique à tar de travailler sur stdin/stdout au lieu de travailler sur des fichiers, il va donc travailler à la volée.

Juin 142011
 

ssh est vraiment bien foutu je trouve, il est aussi pas trop mal documenté.
par mesure de sécurité j’ai certains services ou l’accès n’est autorisé que localement.
je prends par exemple le panel d’administration par le web qu’est ‘webmin’. (stupide de laisser un tel outil à la portée du premier hackeur venus).
donc, à moins d’être authentifié sur le serveur, personne de l’extérieur ne pourra y accéder.

pour les exemples je vais prendre les machines ‘maison’ et ‘boulot’, on va considérer que je veuille me connecter depuis le boulot, à la maison.
la machine localhost dans ces exemple sera donc ‘boulot’.
tout d’abord, vérifier que les deux paramètres suivants sont bien renseignés dans la configuration ssh:
Continue reading »

Juin 142011
 

petits raccourcis utilisables tous les jours:

/ – effectue une recherche du haut vers le bas.
? – effectue une recherche du bas vers le haut.
* – si le curseur est sur un mot, une recherche vers le bas de ce mot complet sera faite
$ – si le curseur est sur un mot, une recherche vers le haut de ce mot complet sera faite

:set hlsearch – pour surligner les éléments de la recherche.
:set nohlsearch – pour arrêter le surlignage.
:nohlsearch – pour arrêter le surlignage temporairement.
Continue reading »

 Publié par à 14 h 59 min  Taggué avec :
Juin 142011
 

ce script permet de rechercher un mot dans une liste sauf que le résultat n’est pas le mot tant recherché, mais une liste des mots s’y rapprochant.

bon, c’est pas parfait mais ça fonctionne plutôt bien, il manque un truc que j’aimerais bien rajouter si j’ai du temps, c’est l’inversion des caractères pour corriger certaines fautes de typo.

Download : exhaustive_research.sh#!/bin/ksh -a
#
###############################################################################
###
# Auteur: Cedrick Gaillard
# Version 0.5.0
# Contributeurs: Cedrick Gaillard
#
# 0.4.0 07-jun-07: Creation
# 0.5.1 07-sep-07: correction d’un calcul mal ecrit (caractere ‘}’ en trop).
# 0.6.0 08-jul-08: modification du message de resultat de la recherche
#
###############################################################################

# principe de la recherche:
# en dessous de TAILLE_MIN on ne recherche pas
#
# en dessous de TAILLE_MAX on effectue une recherche restrictive, chaque
# caractere est successivement remplace par un ‘.’ et le mot a rechercher est
# entoure par les delimiteurs ‘debut’ et ‘fin’ de ligne.
# exemple de masque de recherche pour le mot ‘123’:
# « ^.23$|^1.3$|^1.3.$ »
#
# au dessus de TAILLE_MAX on passe a l’etape superieure, le champ de recherche
# est beaucoup plus grand.
# il n’y a pas de delimiteur ‘debut’ et ‘fin’ de ligne, la recherche est
# exhaustive.
# chaque caracteres est successivement remplace par un ‘.’
# si dans le mot a rechercher il y a plusieurs fois le meme caractere, en ce
# cas il y a substitution des caracteres identiques par un ‘.’
# masque de recherche pour le mot ‘12345678’
# « .2345678|1.345678|12.45678|123.5678|1234.678|12345.78|123456.8|1234567. »
# masque de recherche pour le mot ‘11234456’
# « ..23..56|..23..56|…3..56|..2…56|..23..56|..23..56|..23…6|..23..5. »
# masque de recherche pour le mot ‘compteur’ <== plus parlant surement # ".ompteur|c.mpteur|co.pteur|com.teur|comp.eur|compt.ur|compte.r|compteu." # # le tout est finalement parse avec egrep. # ############################################################################### DICTIONNAIRE=$1 MOT_A_RECHERCHER="$2" TAILLE_MIN=3 TAILLE_MAX=4 # sous solaris, seul l'expr du rep /usr/ucb fonctionne PATH="/usr/ucb:/usr/xpg4/bin:/bin/usr/bin:/$PATH" TMPFILE=/tmp/$$.${0##*/}.$RANDOM mkdir -p $TMPFILE NAME_ALL="$(cat ${DICTIONNAIRE}|egrep -v "^$|^#")" LONGUEUR_DU_MOT="$(echo $MOT_A_RECHERCHER |nawk '{print length($0)}')" cp /dev/null $TMPFILE/test_length cp /dev/null $TMPFILE/test_length_duplicate if [ "$LONGUEUR_DU_MOT" -ge "$TAILLE_MIN" -a "$LONGUEUR_DU_MOT" -le "$TAILLE_MAX" ] then POSITION_DU_POINT=0 occurence= while [ 1 ] do [ -n "$occurence" ] && echo "^${occurence}$" [ "$POSITION_DU_POINT" -eq "$LONGUEUR_DU_MOT" ] && break POSITION_DU_POINT="$((${POSITION_DU_POINT}+1))" [ "$POSITION_DU_POINT" -eq "1" ] && { occurence=".$(expr substr $MOT_A_RECHERCHER 2 $LONGUEUR_DU_MOT)" continue } [ "$POSITION_DU_POINT" -eq "$LONGUEUR_DU_MOT" ] && { occurence="${occurence}." continue } start_first=1 stop_inter=$((${POSITION_DU_POINT}-1)) start_inter=$((${POSITION_DU_POINT}+1)) stop_last=$((${LONGUEUR_DU_MOT}-${POSITION_DU_POINT})) first_block=$(expr substr $MOT_A_RECHERCHER $start_first $stop_inter) last_block=$(expr substr $MOT_A_RECHERCHER $start_inter $stop_last) occurence="${first_block}.${last_block}" done >>$TMPFILE/test_length
elif [ « $LONGUEUR_DU_MOT » -gt « $TAILLE_MAX » ]
then
# y a-t’il des lettres identiques dans le mot a rechercher ?
POSITION_DANS_MOT=0
while [ 1 ]
do
[ « $POSITION_DANS_MOT » -eq « $LONGUEUR_DU_MOT » ] && break
POSITION_DANS_MOT= »$((${POSITION_DANS_MOT}+1)) »

printf « $(expr substr $MOT_A_RECHERCHER $POSITION_DANS_MOT 1)\n »
done |sort |uniq -d >$TMPFILE/test_length_duplicate

# calcul des possibilites
POSITION_DU_POINT=0
while [ 1 ]
do
[ « $POSITION_DU_POINT » -eq « $LONGUEUR_DU_MOT » ] && break
POSITION_DU_POINT= »$((${POSITION_DU_POINT}+1)) »

POSITION_DANS_MOT=0 #on remet le compteur a zero a chaque fois
occurence=

while [ 1 ]
do
[ « $POSITION_DANS_MOT » -eq « $LONGUEUR_DU_MOT » ] && break
POSITION_DANS_MOT= »$((${POSITION_DANS_MOT}+1)) »

[ « $POSITION_DU_POINT » -eq « $POSITION_DANS_MOT » ] && occurence= »${occurence}. » && continue

lettre_en_cours= »$(expr substr $MOT_A_RECHERCHER $POSITION_DANS_MOT 1) »
if [ « $(egrep -ic « ^${lettre_en_cours}$ » $TMPFILE/test_length_duplicate) » = « 1 » ]
then
occurence= »${occurence}. »
continue
fi

[ « $POSITION_DU_POINT » -ne « $POSITION_DANS_MOT » ] && occurence= »${occurence}${lettre_en_cours} »
done

echo « $occurence » >>$TMPFILE/test_length
done
fi

if [ « $LONGUEUR_DU_MOT » -ge « $TAILLE_MIN » ]
then
final_research_value=
while read research_value
do
[ -z « $final_research_value » ] && final_research_value= »$research_value » && continue
final_research_value= »${final_research_value}|$research_value »
done <$TMPFILE/test_length DEBUG exhaustive_research "[$final_research_value]" RESULT_EX_RESEARCH="$(echo "${NAME_ALL}" |egrep -i "$final_research_value" |tr "\n" " ")" [ -n "$RESULT_EX_RESEARCH" ] && { echo "voici une liste d'elements se rapprochant de votre recherche:" echo " $RESULT_EX_RESEARCH" } fi rm -r $TMPFILE [/bash]

bien sûr ce script est très largement améliorable et optimisable.

Juin 142011
 

Sous Linux, il y avait un truc qui m’énervait passablement.

le fait d’activer la touche Capslock (celle avec le cadenas) ne permet pas d’utiliser les chiffres se trouvant sur la barre du haut.

Pour ceux qui n’ont pas de clavier azerty, voici un mapping de ce clavier pour mieux comprendre de quoi je parle.

  ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ _______
 | œ "| 1 ·| 2 É| 3 ,| 4 '| 5 "| 6 || 7 È| 8 ¯| 9 Ç| 0 À| ° ÿ| + °| <--   |
 | Œ "| & '| é ~| " #| ' {| ( [| - || è `| _ \| ç ^| à @| ) ]| = }|       |
  ========================================================================
 | |<-  | A ä| Z Å| E ¢| R Ç| T Þ| Y Ý| U ü| I ï| O ö| P '| " `| $ ë|   , |
 |  ->| | a â| z å| e €| r ç| t þ| y ý| u û| i î| o ô| p ¶| ^ ~| £ ê| <-' |
  ===================================================================¬    |
 |       | Q Ä| S Ø| D Ë| F ª| G Æ| H Ð| J Ü| K Ï| L Ö| M º| % Ù| µ ¥|    |
 | MAJ   | q Â| s ø| d Ê| f ±| g æ| h ð| j Û| k Î| l Ô| m ¹| ù ²| * ³|    |
  ========================================================================
 | ^   | >  | W  | X  | C  | V  | B  | N  | ?  | .  | /  | §  |     ^     |
 | |   | < || w «| x »| c ©| v ®| b ß| n ¬| , ¿| ; ×| : ÷| ! ¡|     |     |
  ========================================================================
 |      |      |      |                       |       |      |     |      |
 | Ctrl | Super| Alt  | Space    Nobreakspace | AltGr | Super|Menu | Ctrl |
  ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯¯ ¯¯¯¯¯¯

Avouez que c’est bête d’avoir des chiffres sur la rangée du haut et de ne pouvoir les utiliser qu’avec une combinaison de touches (Shift + la touche correspondante)

Continue reading »

Juin 102011
 

bdf amélioré sur une seule ligne:

  • affiche sur une seule ligne chaque FS
  • affiche le type de FS
  • affiche les Inodes
  • convertit les tailles dans un format humainement lisible
  • affiche un total de l’espace présent/utilisé/disponible en fin
Download : bdf.pl


exemple de sortie :

$ bdf.pl
File System         Size     Used    Avail %Used   Inodes    IFree %IUsed Type Mounted on
/dev/vg00/lvol3    1.97G  314.57M    1.65G   16%     2581    54443     5% vxfs /
/dev/vg00/lvol1    1024M  147.29M  869.96M   14%      144    28048     1% vxfs /stand
/dev/vg00/lvol8       6G    3.44G    2.54G   58%    42861    83763    34% vxfs /var
/dev/vg00/lvol7       4G    3.25G  761.31M   81%    56491    24533    70% vxfs /usr
/dev/vg00/lvol6    7.81G    3.09G    4.69G   40%    55047   154809    26% vxfs /opt
/dev/vg00/lvol5       2G   16.38M    1.97G    1%       12    64980     0% vxfs /tmp
/dev/vg00/lvol4       2G   16.29M    1.97G    1%        4    64988     0% vxfs /data
         Total:   24.78G   10.26G   14.40G
 Publié par à 12 h 50 min  Taggué avec :
Juin 092011
 

voici une fonction permettant de calculer le temps qu’utilise un élément d’un script perl.

Download : calcultime.pl

#!/usr/bin/perl
use strict ;
use warnings ;
use Time::HiRes qw( gettimeofday tv_interval) ;
 
sub calcultime {
	my ($seconds, $microseconds) = gettimeofday;
	if( !ref($_[0]) ) {
		my $ref = [ ($seconds, $microseconds) ] ;
		return ($ref) ;
	}
	else {
		my ($oldtime, $name) = @_ ;
		my ($oldseconds, $oldmicroseconds) = @$oldtime ;
		my $elapsed = tv_interval( [$oldseconds, $oldmicroseconds, [$seconds, $microseconds]] );
		return($elapsed);
	}
}

utilisation:
Continue reading »

 Publié par à 15 h 54 min  Taggué avec :