mobidyc

mobidyc

Juin 232011
 

1. rappel pour quand un serveur HP-UX plante.

depuis le GSP, il ne faut jamais utiliser la commande CM -> RS.
cela ferait un bête reset du serveur.
au contraire, utiliser la commande CM -> TC

TC signifie « Transfert of Control », et va exécuter un dump de la mémoire sur disque, généralement sur le lvol swap.

après que le dump ait été enregistré sur disque, le serveur reboot.
une fois le serveur redémarré, le dump est automatiquement transféré dans le répertoire configuré dans le fichier /etc/rc.config.d/savecrash
Continue reading »

Juin 232011
 

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 »

Juin 202011
 

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


 Publié par à 12 h 47 min  Taggué avec :
Juin 152011
 

j’ai eu un filesystème à 90% ce Week-End.
j’ai eu beau chercher partout avec « find » et « du », rien a faire, je ne trouvais pas ce qui clochait.

la seule explication que j’ai pu trouver était : les fichiers sont sous un point de montage,on ne peut pas les voir.
seulement voila, on ne démonte pas un filesystem sur un serveur en production pour voir s’il y a des fichiers en dessous !
heureusement, il y a toujours une solution xD
Continue reading »

 Publié par à 13 h 03 min  Taggué avec : ,
Juin 152011
 

Testé sur HP-UX

veuillez vérifier le chemin de /bin/printf et /bin/echo

détection de la taille de l’écran.
affichage sans débordement à moins que l’un des choix soit lui même plus grand que le taille de cet écran.

cette fonction prend en argument un liste de valeur et retourne cette liste comme un menu.
ce menu sera adapté à la taille de votre terminal.

si la taille ne peut pas être détectée, l’affichage sera un choix par ligne.
Continue reading »

Juin 152011
 

avec awk sur des multiples de 1024
pour mémoire

petit awk pour calculer les octets en Koctet

$ echo 1023 |awk '{ if($1<1025){print "1";exit}else{x=$1}; x = $1<1025 ? 1025 : $1 ; x /= x>1024 ? 1024 : 0 ; printf("%dn", x += int(x)<x ? 1 : 0) }'
1
$ echo 1024 |awk '{ if($1<1025){print "1";exit}else{x=$1}; x = $1<1025 ? 1025 : $1 ; x /= x>1024 ? 1024 : 0 ; printf("%dn", x += int(x)<x ? 1 : 0) }'
1
$ echo 1025 |awk '{ if($1<1025){print "1";exit}else{x=$1}; x = $1<1025 ? 1025 : $1 ; x /= x>1024 ? 1024 : 0 ; printf("%dn", x += int(x)<x ? 1 : 0) }'
2
$ echo 4095 |awk '{ if($1<1025){print "1";exit}else{x=$1}; x = $1<1025 ? 1025 : $1 ; x /= x>1024 ? 1024 : 0 ; printf("%dn", x += int(x)<x ? 1 : 0) }'
4
$ echo 4096 |awk '{ if($1<1025){print "1";exit}else{x=$1}; x = $1<1025 ? 1025 : $1 ; x /= x>1024 ? 1024 : 0 ; printf("%dn", x += int(x)<x ? 1 : 0) }'
4
$ echo 4097 |awk '{ if($1<1025){print "1";exit}else{x=$1}; x = $1<1025 ? 1025 : $1 ; x /= x>1024 ? 1024 : 0 ; printf("%dn", x += int(x)<x ? 1 : 0) }'
5
Juin 152011
 

si vous avez un netmask du style: fffcac00
voici comment le convertir avec sed/awk:

$ echo fffcac00 |sed 's/\(..\)/\1 /g' |awk '{printf ("%d.%d.%d.%d\n","0x"$1,"0x"$2,"0x"$3,"0x"$4)}'
255.252.172.0

– on sépare tout les deux caracteres par un espace.
– on utilise awk pour travailler sur chaque champ séparé par un espace.
– on utilise le printf de awk pour convertir l’hexa en décimal.

Juin 152011
 

pas trop besoin d’explication pour ce script, a prendre tel quel quasiment:

Download : disable_inetd_svcs.sh

#!/usr/bin/ksh

echo "   --> Configuration des services inetd"

# Liste des services à désactiver.
DISABLES="bootps finger uucp gssd ncpm-pm registrar
         rpc.rexd rpc.rstatd rpc.rusersd rpc.rwalld rpc.rquotad rpc.sprayd
         ncpm-hip ftp telnet shell exec ntalk swat
         klogin klogind discard chargen kshell klogin
         recserv tftp daytime printer time echo"

awk -v TODEL="$DISABLES" '
   BEGIN { split(TODEL ,del) ; }
   {
      for ( n = 1 ; n in del ; n++) {
         if (del[n] == "") {
            next ;
         } else if ($1 == del[n]) {
            printf("#%s\n",$0) ;
            next ;
         }
      }
      if ($1 ~ /^rpc$/) {
         for ( n = 1 ; n in del ; n++) {
            if (del[n] == "") {
               next ;
            } else if ($9 == del[n]) {
            printf("#%s\n",$0) ;
            next ;
         }
      }
   }
      print $0 ;
   }' template.txt >| template.new.txt

PS: si c’est pour utiliser tout de suite, oubliez pas de recharger la config avec inetd -c

 Publié par à 12 h 23 min  Taggué avec :
Juin 152011
 

ce script n’est pas de moi mais c’est un bon aide mémoire sur les bitwise

#!/bin/ksh
 
typeset -i2 mask=255
 
[[ $# != 2 ]] && {
   echo "Usage: $0 ipaddress subnetmask"
   exit 1
}
 
SaveIFS=$IFS
IFS=.
set -A IParr $1
set -A NMarr $2
IFS=$SaveIFS
 
typeset -i2 ipbin1=${IParr[0]}
typeset -i2 ipbin2=${IParr[1]}
typeset -i2 ipbin3=${IParr[2]}
typeset -i2 ipbin4=${IParr[3]}
 
typeset -i2 nmbin1=${NMarr[0]}
typeset -i2 nmbin2=${NMarr[1]}
typeset -i2 nmbin3=${NMarr[2]}
typeset -i2 nmbin4=${NMarr[3]}
 
echo
echo "       IP Address: $1"
echo "      Subnet Mask: $2"
echo "  Network Address: $((ipbin1 & nmbin1)).$((ipbin2 & nmbin2)).$((ipbin3 & nmbin3)).$((ipbin4 & nmbin4))"
echo "Broadcast Address: $((ipbin1 | (mask ^ nmbin1))).$((ipbin2 | (mask ^ nmbin2))).$((ipbin3 | (mask ^ nmbin3))).$((ipbin4 | (mask ^ nmbin4)))"
echo