21 Sep 2013

logrotate : Erreur "gzip: stdin: file size changed while zipping"

Category: Administration de serveur,Debiancduv @ 00:16

Après avoir installé et configuré logrotate sur son serveur il peut arriver de recevoir des courriels de cron contenant le message (visiblement d'erreur) suivant :

/etc/cron.daily/logrotate:
gzip: stdin: file size changed while zipping

N'arrivant pas à chaque fois et sans vraiment plus d'informations que ça : on recevra ce message encore quelques fois avant de se décider à faire quelque chose...

Poursuivre la lecture"logrotate : Erreur "gzip: stdin: file size changed while zipping""

Étiquettes : , ,


06 Mar 2012

Renommer un noeud Munin sans perdre son historique

Category: Administration de serveur,Debiancduv @ 15:32

Il arrive suite à migration ou erreur, de vouloir renommer une machine et, ce, sans perdre son historique de monitoring Munin. Je vous propose donc le script suivant, librement inspiré de celui de Yannick Warnier sur le blog BeezNest.

#! /bin/bash

# Moves RRD files from /var/lib/munin/$OLD_DOMAIN/ to /var/lib/munin/$NEW_DOMAIN/ by renaming files as required by munin.
# (Also does the same move operation for HTML files in /var/www/munin)
# 
# @author DUVERGIER Claude
# @version 2012-03-06
# @see http://blog.claude.duvergier.fr/2012/03/renommer-un-noeud-munin-sans-perdre-son-historique


# Move operation config (will obviously be changed anytime a move is required):
OLD_DOMAIN='localdomain'
OLD_HOSTFQDN='localhost.localdomain'
NEW_DOMAIN='subdom.company.com'
NEW_HOSTFQDN='mailserver.subdom.company.com'


# System config (shouldn't often be changed):
MUNIN_USER='munin'
MUNIN_GROUP='munin'
MUNIN_RRDDIR='/var/lib/munin'
MUNIN_HTMLDIR='/var/www/munin'


# DEBUG:
#for file in $MUNIN_RRDDIR/$OLD_DOMAIN/$OLD_HOSTFQDN-*.rrd; do echo `echo $file | sed "s,$OLD_HOSTFQDN,$NEW_HOSTFQDN," | sed "s,$MUNIN_RRDDIR/$OLD_DOMAIN/,$MUNIN_RRDDIR/$NEW_DOMAIN/,"`; done
#for file in $MUNIN_HTMLDIR/$OLD_DOMAIN/$OLD_HOSTFQDN*; do echo `echo $file | sed "s,$OLD_HOSTFQDN/$NEW_HOSTFQDN," | sed "s,$MUNIN_HTMLDIR/$OLD_DOMAIN/,$MUNIN_HTMLDIR/$NEW_DOMAIN/,"`; done


# RRD files :
mkdir -p "$MUNIN_RRDDIR/$NEW_DOMAIN"
chown $MUNIN_USER:$MUNIN_GROUP "$MUNIN_RRDDIR/$NEW_DOMAIN"
for file in $MUNIN_RRDDIR/$OLD_DOMAIN/$OLD_HOSTFQDN-*.rrd; do mv $file `echo $file | sed "s,$OLD_HOSTFQDN,$NEW_HOSTFQDN," | sed "s,$MUNIN_RRDDIR/$OLD_DOMAIN/,$MUNIN_RRDDIR/$NEW_DOMAIN/,"`; done


# HTML files :
mkdir -p "$MUNIN_HTMLDIR/$NEW_DOMAIN"
chown $MUNIN_USER:$MUNIN_GROUP "$MUNIN_HTMLDIR/$NEW_DOMAIN"
if [ -d "$MUNIN_HTMLDIR/$OLD_DOMAIN/$OLD_HOSTFQDN" ]; then # Each host has it's own sub-directory ($MUNIN_HTMLDIR/domain/host.domain/...)
	mv "$MUNIN_HTMLDIR/$OLD_DOMAIN/$OLD_HOSTFQDN" "$MUNIN_HTMLDIR/$NEW_DOMAIN/$NEW_HOSTFQDN"
else # Files of different hosts are stored in the same domain directory ($MUNIN_HTMLDIR/domain/host.domain-...)
	for file in $MUNIN_HTMLDIR/$OLD_DOMAIN/$OLD_HOSTFQDN-*; do mv $file `echo $file | sed "s,$OLD_HOSTFQDN,$NEW_HOSTFQDN," | sed "s,$MUNIN_HTMLDIR/$OLD_DOMAIN/,$MUNIN_HTMLDIR/$NEW_DOMAIN/,"`; done
fi

Penser à couper/désactiver le cron et le daemon Munin avant d'exécuter le script. Il faut aussi bien entendu modifier le fichier de configuration déclarant les noeud Munin pour y mettre le nouveau nom/FQDN du noeud.

Il a été testé sur Debian 5.0 et 6.0 mais est suffisamment générique/configurable pour fonctionner sur d'autres distributions Linux.


13 Fév 2012

Comment avoir un joli prompt pour votre console linux : Modifier PS1 de l'invite bash

Category: Debian,GNU/Linuxcduv @ 01:11

En cherchant à l'époque, j'avais trouvé un petit "script" tout fait pour décorer l'invite Bash de mon terminal Debian qui ressemble généralement à ça :

user@host:~$

Je vous propose d'avoir quelque chose de plus joli et quelques peu plus pratique :

(user@host)-(23:53:18 dim. févr. 12)
(~)-(3 files):

Pour cela, il vous faut rajouter/remplacer la ligne suivante dans votre fichier ".bashrc" :
# Fancy prompt (inspired by Wolven : http://forums.debian.net/viewtopic.php?f=10&t=377)
PS1="n[e[30;1m]([e[31;1m]u@h[e[30;1m])-([e[34;1m]t d[e[30;1m])[e[30;1m]n([e[32;1m]w[e[30;1m])-([e[32;1m]$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files[e[30;1m]): [e[0m]"