Il y a des fois ou on aimerait bien reprendre ses comptes en main, et analyser le tout au travers d’un tableur par exemple.

je suis à la banque CIC et à ce titre j’ai accès à l’historique de mes comptes…en pdf.
ce qui n’est pas forcément le meilleur format à insérer dans un tableur. voici une méthode pour convertir ces fichiers PDF en CSV, importables dans n’importe quel tableur.

premièrement, installer pdftohtml, il existe des versions pour Windows ou Linux.
deuxièmement, télécharger les fichiers PDF contenant vos extraits de compte. Je vous conseille retirer les espaces dans le nom des fichiers afin de pouvoir les traiter plus facilement.
Continue reading »

 

raid5 optimisé, au final, j’ai multiplié par 4 les performances initales.

maintenant,
la copie d’un gros fichier depuis et vers le même filesystème se fait à environ 85Mo/s.
la lecture d’un fichier se fait environ à 1Go/s
l’écriture environ à 190Mo/s

pour tous les détails c’est à la page perfs x4 – optimisation d’un raid5 par la pratique

vous y trouverez un résumé condensé des différentes optimisations, toutes les modifications effectuées, des scripts de stress et de test et aussi le détail très technique de toutes les opérations.

 

Pour voir le nombre de CPU logique :

$ grep -c "processor" /proc/cpuinfo
16

le nombre de CPU physique :

$ grep "physical id" /proc/cpuinfo |sort -u |wc -l
2

nombre de core par CPU :
Continue reading »

 

selon les données à sauvegarder/archiver, il ne faut pas se jeter sur le premier outil de compression qui nous vient en tête.

voici un exemple concret concernant une sauvegarde mysql, vous serez tous d’accord avec moi pour dire que ce n’est finalement que du texte:

$ ls -lh backup.sql*
-rw-r--r-- 1 root root  25M 2011-11-30 13:03 backup.sql
-rw-r--r-- 1 root root 6,7M 2011-11-30 13:04 backup.sql.gz
-rw-r--r-- 1 root root 1,8M 2011-11-30 13:05 backup.sql.7z

Continue reading »

 

We had performance issues on our NFS servers, very poor performances.
after analyze we have seen that the bottleneck came from the disks, as always;
but tuning the FS did not solve the problem.

I talk about 1500 NFS mountpoint (running on 9 nodes from ServiceGuard cluster solution) as in my actual mission, everything works through NFS.
The homedir of course but also the applications, the logs, libraries etc…
Continue reading »

 

Hi gents,

after searching a script to massive set quota for users on HP-UX, i’ve found nothing, only people asking how to do it.
of course you have the ‘edquota’ command, which can copy a user’s quota template into another account, but this is not the best way.

so, i’ve wrote a little script to do the job, for all my NFS users.

this script will definitively not fit for an other person than me and my needs, but I think it can be a good basis.
Continue reading »

 

voici une mise à jour du script MULTI_PROC.sh
ce script, permet de paralléliser le lancement de scripts.

attention, ce script a été conçu pour fonctionner depuis Solaris uniquement.
n’oubliez pas de changer les chemins à différents binaires pour un autre OS.
Continue reading »

 

la commande « sleep x » sous Unix permet de faire une pause de x secondes.

je viens de trouver une commande perl assez satisfaisante permettant de faire des pause de moins d’une seconde.
intéressant par exemple lorsque l’on fork des process.
en effet, s’il n’y a pas de pause dans le script, lorsque les forks se terminent, ils restent en état zombie.
Continue reading »

 

Voici un script qui regarde si l’espace disponible pour un crash dump est suffisant ou pas.
bien évidemment, il faut le lancer avant que la machine ne freeze.

Download : checkdumpsize.sh
#!/bin/sh

PATH=/bin:/usr/bin:/sbin:/usr/sbin
SAVECRASH_DIR="/var/adm/crash"

[ -f /etc/rc.config.d/savecore ] && . /etc/rc.config.d/savecore
[ -f /etc/rc.config.d/savecrash ] && . /etc/rc.config.d/savecrash
[ -f /etc/rc.config.d/savecrash ] || {
	echo "ERROR: /etc/rc.config.d/savecrash defaults file MISSING"
	exit 0
}

Print_data () {
	printf " %4s Size Mem dump %6d\n" "$1" $MEM_DUMP_SIZE

	if [ "$MEM_DUMP_SIZE" -lt "$LV_DUMP_SIZE" ]
	then
		printf " Size Disk dump     %6d OK\n" $LV_DUMP_SIZE
	else
		printf " Size Disk dump     %6d Error\n" $LV_DUMP_SIZE
	fi

	if [ "$MEM_DUMP_SIZE" -lt "$FS_DUMP_SIZE" ]
	then
		printf " Size free Dir      %6d OK\n" $FS_DUMP_SIZE
	else
		printf " Size free Dir      %6d Error\n" $FS_DUMP_SIZE
	fi

	printf "\n"
}

MEM_DUMP_SIZE=$( /sbin/crashconf -v |grep "Total pages included in dump"| cut -d":" -f2 )
MEM_DUMP_SIZE=$( echo $MEM_DUMP_SIZE |awk '{ printf ("%d\n", ($1 * 4 / 1024)) }' )
FS_DUMP_SIZE=$( bdf $SAVECRASH_DIR |grep -v used | awk '{ print $4 }' )
FS_DUMP_SIZE=$( echo $FS_DUMP_SIZE |awk '{ printf ("%d\n", ($1 / 1024)) }' )
LV_DUMP_SIZE="0"

for SIZE in $( /sbin/crashconf -v |grep "dev" | awk '{ print $3 }' )
do
	LV_DUMP_SIZE=$(expr $SIZE + $LV_DUMP_SIZE)
done

LV_DUMP_SIZE=$( echo $LV_DUMP_SIZE |awk '{ printf ("%d\n", ($1 / 1024)) }')

printf "\n                     Data in Mb\n"
Print_data ""

MEM_DUMP_SIZE=$(echo $MEM_DUMP_SIZE |awk '{ printf ("%d\n", ($1 * 105 / 100)) }')
Print_data "+5%"

MEM_DUMP_SIZE=$(echo $MEM_DUMP_SIZE |awk '{ printf ("%d\n", ($1 * 1047 / 1000)) }')
Print_data "+10%"

MEM_DUMP_SIZE=$(echo $MEM_DUMP_SIZE |awk '{ printf ("%d\n", ($1 * 1091 / 1000)) }')
Print_data "+20%"

il affiche l’espace dispo pour maintenant et aussi si la mémoire utilisée augmente de +5, +10 et +20%.
on peut donc prévoir un rajout d’espace disque.

exemple de sortie du script:
Continue reading »

 

script permettant un affichage amélioré de : bdf

bdf affiche généralement sur 2 ligne une info concernant un point de montage si celui-ci dépasse 80 caractère, ce qui est souvent le cas.

ce script affiche chaque enregistrement sur une seule ligne, avec en sus, des infos comme le nombre d’inodes et le type de filesystème.

la version perl de ce script fonctionne très bien.
cependant, perl n’est pas présent sur tout les serveurs.

voici donc la version ksh.

Download : bdfa.sh
#!/bin/ksh
##----------------------------------------------------------------------------
# ATTENTION : Pour lecture plus clair tapez :tabstop=3 sous vi ou positionner
# ---------   "set tabstop=3" dans le fichier ".exrc"
## Script  : bdfa
## Version : 2.0.0
## Objet   : Formatage de la commande bdf.
## Auteur  : Cedrick GAILLARD
##----------------------------------------------------------------------------
# 1.0.0 27-oct-06 - Cedrick - Creation
# 1.0.1 19-mar-07 - Cedrick - Ajout du PATH
# 1.1.0 19-mar-07 - Cedrick - modification du script en profondeur
#                             pour une selection du/des chemin(s) plus vaste.
# 2.0.0 02-jul-08 - Cedrick - reecriture quasi complete avec apparition de:
#                              - taille affichees du Ko jusqu'au Yo
#                              - plus de doublon sur les FS nfs
#                              - amelioration syntaxique
# 2.0.1 30-jul-08 - Cedrick - modification du code pour corriger les problemes suivants:
#                              - bdfa ne remontait pas jusqu'a la racine lors de: bdfa /somedir
#                              - bdfa ne prenais pas bien en compte le repertoire "."
# 2.0.2 02-avr-09 - Cedrick - Utilisation de df pour localiser le point de montage.
# 2.1.0 13-aou-09 - Cedrick - le metrique (M,G,Y,Etc...) est sur un caractere maintenant.
#                           - ajout du total de tout les FS en fin de calcul
#                           - correction de l'anayse des chemins donnes en argument.
# 3.0.0 21-sep-09 - cedrick - reecriture complete.
#                           - beaucoup plus rapide.
#                           - affichage du total si plus d'un FS.
#                           - accepte tous les arguments de bdf.
#
#-----------------------------------------------------------------------------
##
## Ce script permet d'afficher la sortie d'un bdf sans chevauchement de ligne
## l'option -i de bdf est utilisee ce qui permet d'afficher des informations
## sur les inodes.
##

[ "$(uname -s)" != "HP-UX" ] && {
   echo "Erreur: script indisponible pour [ $(uname -s) ]."
   exit
}

# Initialisations
SUFFIXES="KMGTPEZY"
MAX_SUFF=${#SUFFIXES}

# On recupere la sortie du bdf et on met sur une ligne ce qui doit l'etre
BDF_OUTPUT=$(bdf -i $@ |tail +2 |sed -e '/^[^ ][^ ]*$/{
N
s/[ ]*\n[ ]*/ /
}')

# On recupere les types de FS presents montés sur le systeme
MNT_OUTPUT=$(awk '{if($3 ~ "^"autofs"$") {next} else {printf("%s %s\n",$1, $3)}}' /etc/mnttab)

#------------------------------------------------------------------------------#
# Fonction retournant les nombres convertis avec leur suffixe.
#
calc_number () {
	NUMBER=$1
	ITERATION=1
	while [ "$NUMBER" -gt "1023" ]
	do
		[ "$ITERATION" -ge "$MAX_SUFF" ] && break
		ITERATION=$(($ITERATION + 1))
		NUMBER=$(echo "scale=2; $NUMBER / 1024" |bc)
	done

	NUMBER=$(printf "%.2f" $NUMBER)
	[ -n "$(echo "$NUMBER" |fgrep ".00")" ] && {
		NUMBER=$(printf "%.0f" $NUMBER)
	}
	echo "${NUMBER}$(echo $SUFFIXES |cut -c${ITERATION})"
}
#
# Fin - calc_number
#------------------------------------------------------------------------------#

#------------------------------------------------------------------------------#
# affiche le resultat
#
printf_data () {
	if [ "${#}" -gt "4" ]
		then
			printf "%-${LENGTH_LV}s %8s %8s %8s %5s %8s %8s %5s %5s %s\n" "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}"
		else
			printf "%${LENGTH_LV}s %8s %8s %8s\n" $1 $2 $3 $4
	fi
}
#
# Fin - printf_data
#------------------------------------------------------------------------------#

# On compte le nombre de caracteres du premier champ avec awk
LENGTH_LV=$(echo "${BDF_OUTPUT}" |awk 'BEGIN{name=0} {
	if(length($1) > name) {
		name=length($1)
	}
} END {
	print name
}')

# Affichage de l'En-tete
printf_data 'File System' Size Used Avail '%Used' Inodes Ifree '%IUsed' Type '%Mounted On'

TSIZE=0 TUSED=0 TAVAIL=0
# On met en forme
echo "${BDF_OUTPUT}" |while read LVOL SIZE USED AVAIL PUSED IUSED IFREE IUSE MOUNTED
do
	TSIZE=$(($TSIZE + $SIZE))
	TUSED=$(($TUSED + $USED))
	TAVAIL=$(($TAVAIL + $AVAIL))

	SIZE=$(calc_number $SIZE)
	USED=$(calc_number $USED)
	AVAIL=$(calc_number $AVAIL)

	# Type de FS
	FS_TYPE=$(echo "$MNT_OUTPUT" |grep "^$LVOL " |cut -d" " -f2)
	printf_data $LVOL $SIZE $USED $AVAIL $PUSED $IUSED $IFREE $IUSE $FS_TYPE $MOUNTED
done

# Affichage du total si plusieurs FS affiches
[ "$(echo "${BDF_OUTPUT}" |wc -l)" -gt "1" ] && {
	TSIZE=$(calc_number $TSIZE)
	TUSED=$(calc_number $TUSED)
	TAVAIL=$(calc_number $TAVAIL)
	printf_data -------- -------- -------- --------
	printf_data "Total:" $TSIZE $TUSED $TAVAIL
}
© 2011 Unix Open Suffusion theme by Sayontan Sinha