Catégorie : Script

20 juin 2017 /

Pour cela nous devons installer exiv2:

apt-get install -y exiv2

Nous pouvons maintenant voir les métadonnées d’une photo via la commande suivante:

exiv2 /Photo/Divers/2016-12-04_13.34.46.jpg

File name : /Photo/Divers/2016-12-04_13.34.46.jpg
File size : 1114471 Bytes
MIME type : image/jpeg
Image size : 2048 x 1536
Camera make : Oneplus
Camera model : One
Image timestamp : 2016:12:04 13:34:45
Image number :
Exposure time : 1/500 s
Aperture : F2.8
Exposure bias : 0 EV
Flash : No flash
Flash bias :
Focal length : 3.6 mm
Subject distance:
ISO speed : 100
Exposure mode : Aperture priority
Metering mode : Center weighted average
Macro mode :
Image quality :
Exif Resolution : 2048 x 1536
White balance : Auto
Thumbnail : image/jpeg, 41311 Bytes
Copyright :
Exif comment :

Pour voir toutes les métadonnées (EXIF, IPTC et XMP):

exiv2 -pa /Photo/Divers/2016-12-04_13.34.46.jpg

Pour supprimer les métadonnées (par exemple avant de publier sur internet):

exiv2 rm /Photo/Divers/2016-12-04_13.34.46.jpg

Pour renommer une photo avec la date de prise de vue :

exiv2 -r %Y%m%d_:basename:_sujet rename /Photo/Divers/2016-12-04_13.34.46.jpg

Modifier le champ Copyright:

exiv2 -M"set Exif.Image.Copyright Ascii starmate.fr" /Photo/Divers/2016-12-04_13.34.46.jpg

Suppression du champ Copyright:

exiv2 -M"del Exif.Image.Copyright Ascii starmate.fr" /Photo/Divers/2016-12-04_13.34.46.jpg

Pour enlever 3 jours (-D), ajouter 5 mois (-O) et ajouter 10 heures (-a) à la date de prise de vue:

exiv2 -v ad -D -3 -O +5 -a +10:00:00 /Photo/Divers/2016-12-04_13.34.46.jpg

Modifier la date de prise de vue au 4 décembre 1984 à 11h34 et 55 secondes:

exiv2 -M"set Exif.Photo.DateTimeOriginal Ascii 1984:12:04 11:34:55" /Photo/Divers/2016-12-04_13.34.46.jpg
exiv2 -M"set Exif.Photo.DateTimeDigitized Ascii 1984:12:04 11:34:55" /Photo/Divers/2016-12-04_13.34.46.jpg

Pour renseigner le champs « auteur »:

exiv2 -M"set Exif.Image.Artist Ascii starmate production" /Photo/Divers/2016-12-04_13.34.46.jpg

Pour renseigner le champ description :

exiv2 -M "set Exif.Image.ImageDescription Ascii Anniversaire de Marie" /Photo/Divers/2016-12-04_13.34.46.jpg

Afficher une métadonnée en particulier (par exemple Exif.GPSInfo.GPSLatitude) :

exiv2 -g Exif.GPSInfo.GPSLatitude /Photo/Divers/2016-12-04_13.34.46.jpg

Extraire uniquement la valeur de la balise Exif.GPSInfo.GPSLatitude :

exiv2 -g Exif.GPSInfo.GPSLatitude -Pv /Photo/Divers/2016-12-04_13.34.46.jpg

Afficher tous les champs disponibles :

exiv2 -P k /Photo/Divers/2016-12-04_13.34.46.jpg

Afficher les informations de géolocalisation:

exiv2 pr -p a /Photo/Divers/2016-12-04_13.34.46.jpg | grep -i GPS

Petit script pour éditer les informations de géolocalisation à la volée:

#!/bin/bash
# Modification des metadonnées de geolocalisation a la volee
##1 - Entrez le chemin du repertoire ou se trouve les photos.
##2 - Entrez l’extension de fichier en respectant la casse, c'est-à-dire, en majuscules ou minuscules (jpg, JPG, etc..)
##3 - Entrez la latitude (N) ou (S) : N ou S Cela se transformera en North ou South sur les tags exif
##4 - Entrez la latitude sous la forme "48/1 13/1 24/1",(exemple pour une latitude: 48°, 13min et 24sec).
##5 - Entrez la longitude (E) ou (O) : E ou O cela se transformera en East ou West
##6 - Entrez la longitude sous la forme "9/1 52/1 51/1", (exemple pour une longitude: 9°, 52min et 51sec).
##
echo -n "1 - Entrez le chemin des photos, sans oublier le slash "/" à la fin "
read chemin
echo -n "1 - Entrez l'extention des photos: "
read extension
echo -n "2 - Entrez la latitude, N ou S : "
read latref
echo -n "3 - Entrez la latitude sous cette forme "48/1 13/1 24/1" : "
read lat
echo -n "Entrez la longitude, E ou O : "
read longref
echo -n "Entrez la longitude sous cette forme "9/1 52/1 51/1" : "
read long
for i in $chemin*.$extension
do
exiv2 -M"set Exif.GPSInfo.GPSLatitudeRef $latref" $i
exiv2 -M"set Exif.GPSInfo.GPSLatitude $lat" $i
exiv2 -M"set Exif.GPSInfo.GPSLongitudeRef $longref" $i
exiv2 -M"set Exif.GPSInfo.GPSLongitude $long" $i
done
echo "TERMINE"

6 juin 2017 /

Nous  allons voir comment permettre à un serveur Centreon de surveiller des ESXi avec le script check_vmware_api.pl.

Installation des dépendances

yum install -y openssl-devel perl-Archive-Zip perl-Class-MethodMaker uuid-perl perl-SOAP-Lite perl-XML-SAX perl-XML-NamespaceSupport perl-XML-LibXML perl-MIME-Lite perl-MIME-Types perl-MailTools perl-TimeDate uuid libuuid perl-Data-Dump perl-UUID cpan libxml2-devel perl-libwww-perl perl-Test-MockObject perl-Test-Simple perl-Monitoring-Plugin perl-Class-Accessor perl-Config-Tiny gcc python perl-Nagios-Plugin

Installation du VMware vSphere Perl SDK

L’installation du « VMware vSphere Perl SDK » est indispensable.
Vous pourrez le télécharger après vous êtes créé un compte VMware.

vSphere SDK for Perl 5.5U2

https://my.vmware.com/web/vmware/details?downloadGroup=SDKPERL552&productId=353

vSphere SDK for Perl 6.0U2

https://my.vmware.com/web/vmware/details?downloadGroup=PERLSDK60U2&productId=610

vSphere Perl SDK 6.5

https://my.vmware.com/web/vmware/details?downloadGroup=VS-PERL-SDK65&productId=614

Une fois téléchargé, on décompresse l’archive et on installe le SDK:

tar xvf VMware-vSphere-Perl-SDK-6.5.0-4566394.x86_64.tar.gz
cd vmware-vsphere-cli-distrib/
perl vmware-install.pl

Installation des module Perl

Perl aura besoin de plusieurs module pour pouvoir exécuter le script check_vmware_api.pl.

Si vous êtes derrière un proxy, il faudra le déclarer avant d’installer les modules:

perl -MCPAN -e shell
o conf init /proxy/
Your ftp_proxy?  http://IP:PORT/
Your http_proxy?  http://IP:PORT/
Your no_proxy?  http://IP:PORT/
Your proxy user id?
o conf commit

On peut maintenant installer nos modules:

perl -MCPAN -e 'install Params::Validate'
perl -MCPAN -e 'install Nagios::Plugin'
perl -MCPAN -e 'install Monitor::Plugin'
perl -MCPAN -e 'install Monitoring::Plugin'
perl -MCPAN -e 'install Math::Calc::Units'
perl -MCPAN -e 'install Config::Tiny'

Installation de la commande check_vmware_api.pl

https://github.com/op5/check_vmware_api

cd /tmp
wget https://github.com/op5/check_vmware_api/archive/master.zip
unzip master.zip
cd check_vmware_api-master/
mv check_vmware_api.pl /usr/lib/nagios/plugins/

Test du script

/usr/lib/nagios/plugins/check_vmware_api.pl

Usage: check_vmware_api.pl -D <data_center> | -H <host_name> [ -C <cluster_name> ] [ -N <vm_name> ]
-u <user> -p <pass> | -f <authfile>
-l <command> [ -s <subcommand> ] [ -T <timeshift> ] [ -i <interval> ]
[ -x <black_list> ] [ -o <additional_options> ]
[ -t <timeout> ] [ -w <warn_range> ] [ -c <crit_range> ]
[ -V ] [ -h ]

Missing argument: command

Le script fonctionne, nous pouvons donc essayer d’interroger notre ESXi:

/usr/local/nagios/libexec/check_vmware_api.pl -H 192.168.122.64 -u utilisateur -p mot_de_passe -l cpu -s usage

Commandes à configurer dans Centreon

check_esx_vmfs

$USER1$/check_vmware_api.pl -D $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$  -l vmfs -o used -s $_SERVICEDATASTORENAME$ -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$

Vérifie le niveau d’utilisation du datastore

check_esx_cpu

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l cpu -s usage -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$

Vérifie la charge CPU de l’ESXi – Argument : niveau WARNING et CRITICAL (en %)

check_esx_health

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l runtime -s health

Vérifie la santé du serveur ESXi

check_esx_issues

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l runtime -s issues

Vérifie les problèmes du serveur ESXi

check_esx_status

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l runtime -s status

Vérifie l’état du serveur ESXi

check_esx_mem

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l mem -s usage -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$

Vérifie la charge mémoire de l’ESXi

check_esx_swap

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l mem -s swap -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$

Vérifie la charge mémoire de l’ESXi

check_esx_io_read

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l io -s read -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$

Vérifie les entrées/sorties en lecture de l’ESXi

check_esx_io_write

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l io -s write -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$

Vérifie les entrées/sorties en écriture de l’ESXi

check_esx_net

$USER1$/check_vmware_api.pl -H $HOSTADDRESS$ -u $_HOSTUSERESX$ -p $_HOSTUSERPASSWORD$ -l net -s usage -w $_SERVICEWARNING$ -c $_SERVICECRITICAL$

Vérifie la charge réseaux de l’ESXi – Argument : niveau WARNING et CRITICAL (en Kbps)

3 mars 2017 /

Pour voir les adresses qui ne répondent pas au ping sur 192.168.0.0/24

Un petit script à faire:

#!/bin/sh
HOST=1
while [ $HOST -lt 255 ];do
ping -q -c 1 -w 1 192.168.0.$HOST > /dev/null
RESULT=$(echo $?)
if [ $RESULT -eq 1 ]; then
printf 192.168.0.$HOST"\n"
fi
HOST=$(expr $HOST + 1)
done

Pour voir les adresses qui répondent au ping sur 192.168.0.0/24

Un petit script à faire:

#!/bin/sh
HOST=1
while [ $HOST -lt 255 ];do
ping -q -c 1 -w 1 192.168.0.$HOST > /dev/null
RESULT=$(echo $?)
if [ $RESULT -eq 0 ]; then
printf 192.168.0.$HOST"\n"
fi
HOST=$(expr $HOST + 1)
done

Sinon via nmap:

nmap -sP 192.168.0.0/24

Et je mets ça ici, c’a peut être utile pour voir les adresses qui ne répondent pas au ping depuis un poste Windaube via powershell:

1..254 | % { if (!(Test-Connection "192.168.0.$_" -Count 1 -Quiet)) {Write-Host "192.168.0.$_"}}

20 février 2017 /

Un équivalent de « bash -x » pour Python:

python -m trace -t script.py

24 octobre 2016 /

Rien n’empêche une machine de disposer de plusieurs adresses IP, sur des interfaces différentes ou sur une même interface et ceci présente de nombreux avantages dans plusieurs circonstances, par exemple :

  • Pour un serveur web (une IP par site).
  • Pour un serveur quelconque, disposer d’une adresse l’IP dédié à l’administration, et d’une ou plusieurs pour les services.
  • Pour un cluster (une IP par service ou groupe de services).
  • Pour un répartiteur de charge (une IP pour chaque serveur virtuel).

Alias sur Debian

Un alias se configure dans le fichier /etc/network/interfaces.
Pour configurer un alias eth0:0, les lignes suivantes doivent y être ajoutées (et adaptées selon les besoins et votre configuration actuelle):

auto eth0:0
iface eth0:0 inet static
address 192.168.1.70
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0

L’alias peut être activé et désactivé comme toute carte avec les commandes ifup et ifdown:

ifup eth0:0
ifdown eth0:0

Alias sur Red Hat

Un alias se configure en créant un fichier dans /etc/sysconfig/network-scripts/ , par exemple ifcfg-eth0:0.
Dans l’exemple de ifcfg-eth0:0, il doit reprendre une structure identique à la configuration de l’interface réseau eth0, excepté l’adresse MAC qui est inutile.
Voici un exemple de contenu :

DEVICE=eth0:0
IPADDR=192.168.1.70
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes

L’alias peut être activé et désactivé comme toute carte avec les commandes ifup et ifdown.

Sur les distributions type RedHat, on peut également créer des plages d’IP multiples en affectant cette plage à une interface réseau.
Il devient alors possible, d’un seul coup, de créer autant d’alias que souhaité, à condition que les adresses IP se suivent.

Si on souhaite créer 19 alias sur eth0 allant de l’IP 192.168.1.71 à 192.168.1.90, le fichier /etc/sysconfig/network-scripts/ifcfg-eth0-range0 doit être créé et rempli avec le contenu suivant :

IPADDR_START=192.168.1.71
IPADDR_END=192.168.1.90
CLONENUM_START=0
NETMASK=255.255.255.0

Le paramètre CLONENUM_START indique le numéro d’alias de départ.

L’interface associée doit être arrêtée et démarrée pour que la modification soit prise en compte, soit par ifdown/ifup, soit par le redémarrage du service network.

Le résultat est le suivant :

ifconfig

eth0:0 Link encap:Ethernet HWaddr 00:0C:29:4C:A6:AF
inet adr:192.168.1.71 Bcast:192.168.1.255
Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth0:1 Link encap:Ethernet HWaddr 00:0C:29:4C:A6:AF
inet adr:192.168.1.72 Bcast:192.168.1.255
Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth0:2 Link encap:Ethernet HWaddr 00:0C:29:4C:A6:AF
inet adr:192.168.1.73 Bcast:192.168.1.255
Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth0:3 Link encap:Ethernet HWaddr 00:0C:29:4C:A6:AF
inet adr:192.168.1.74 Bcast:192.168.1.255
Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth0:4 Link encap:Ethernet HWaddr 00:0C:29:4C:A6:AF
inet adr:192.168.1.75 Bcast:192.168.1.255
Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth0:5 Link encap:Ethernet HWaddr 00:0C:29:4C:A6:AF
inet adr:192.168.1.76 Bcast:192.168.1.255
Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

Etc… jusqu’a eth0:18.