Envoi de mail suite à lecture emails dans un fichier

# !/bin/bash
cd /rmanbackup/scripts/
var1= »‘ »
var2= » »
mail_to= » »
cat tpush_test.tmp | grep BLOQUEUR | gawk -F »: » ‘{print $6 $3}’ > mail_lock.tmp
cat tpush_test.tmp | grep VERROUILLE | uniq | gawk -F »: » ‘{print $6}’ > mail_locke.tmp
while read line
do
var1=`echo $line | cut -f1 -d  » « `
var2=`echo $var1″; »$var2`
done < mail_lock.tmp
mail_to=`echo «  » »$var2″U1_Info_Exploit » »`
echo $mail_to
echo ${ABM_BIN}/tmail -c ${ABM_BIN}/tmail.ini -to eric.fougere@faiveleytransport.com -cc $mail_to -sub « Blocage ERP »
${ABM_BIN}/tmail -c ${ABM_BIN}/tmail.ini -to eric.fougere@faiveleytransport.com -cc $mail_to -sub « Blocage ERP » -msg « 
Bonjour,
Vous bloquez une (ou plusieurs) table(s) sur la base Octal, merci de sortir de votre transcation.
L’ equipe IT »

# !/bin/bash

cd /rmanbackup/scripts/

var1= »‘ »

var2= » »

mail_to= » »

cat tpush_test.tmp | grep BLOQUEUR | gawk -F »: » ‘{print $6 $3}’ > mail_lock.tmp

cat tpush_test.tmp | grep VERROUILLE | uniq | gawk -F »: » ‘{print $6}’ > mail_locke.tmp

while read line

do

var1=`echo $line | cut -f1 -d  » « `

var2=`echo $var1 »; »$var2`

done < mail_lock.tmp

mail_to=`echo «  » »$var2″U1_Info_Exploit » »`

echo $mail_to

echo ${ABM_BIN}/tmail -c ${ABM_BIN}/tmail.ini -to eric.fougere@faiveleytransport.com -cc $mail_to -sub « Blocage ERP »

${ABM_BIN}/tmail -c ${ABM_BIN}/tmail.ini -to eric.fougere@faiveleytransport.com -cc $mail_to -sub « Blocage ERP » -msg  »

Bonjour,

Vous bloquez une (ou plusieurs) table(s) sur la base Octal, merci de sortir de votre transcation.

L’ equipe IT »

BASH

Bash est un surdoué, un shell plein de ressources.

De façon native (built-in on dit), bash sait faire beaucoup de choses sympas. Si on lui adjoint des commandes efficaces, on arrive à un traitement d’une puissance très honorable !

La base

CTRL+A : aller au début de la ligne
CTRL+R : retrouver une commande que vous avez tapez avant en tapant quelques lettres
CTRL+E : aller à la fin de la ligne
export a=2

Les combos

Pour faire des choses amusantes, il nous faut utiliser des “pipes”. (prononcer païpes)
Les symboles > pour créer et cat >> pour “appender”.

cat toto.txt | less

on envoie le contenu de toto.txt à la commande less qui elle va l’afficher page par page. En l’occurrence aucun intéret puisque faire directement less toto.txt fera la même chose en moins de texte.

Par contre ça :

cat toto.txt | sort | uniq | less

C’est intéressant, car on liste le contenu du fichier toto.txt, on en envoie le résultat à la commande sort qui va trier par ordre alphabétique, ensuite ce résultat trié va vers la commande uniq qui dédoublonne le résultat et enfin vers la commande less qui affiche le résultat page par page. Tout ca en une ligne.

On aurait d’ailleurs pu finir cette chaine de flux par un > pour l’écrire dans un fichier :

cat toto.txt | sort | uniq > toto_trié_et_dédoublonné.txt

la plupart du temps | sert à chainer les commandes et > à écrire dans un fichier (ou à la fin de celui-ci avec >>).

Allons-y un peu plus franchement. Admettons qu’un fichier liste.txt contienne plein de prénoms les uns à la suite des autres en vrac, même pas un par ligne, juste séparés par des espaces et que l’on veuille les trier dans l’ordre alphabétique.

Une petite boucle bash :
export a=`cat liste.txt`
for i in $a; do echo $i | sort >liste_triée.txt; done

On insère le résultat de la commande “cat liste.txt” dans la variable a. Ensuite on fait une boucle sur un compteur i au sein de la variable a, on affiche le résultat et ensuite on trie et on insère dans le fichier.

Parfois le séparateur n’est pas pratique et un utilitaire très puissant, appelé AWK, peut vous aider. La synthaxe est complexe mais le résultat est sympa, voici un exemple :

awk -F : ‘{print $1 ” ” $4}’ /etc/passwd

on considère “:” comme le séparateur et on affiche $1 (le premier item) puis un espace ” ” puis $4 (le 4° item selon le séparateur “:”.

Créer un script bash

Le “shebang”, pour sh bang, lancer un shell. C’est comme cela qu’on appel le fait de lancer Bash, tout script bash commence par :

#!/bin/bash

Ensuite on insère son traitement, si on veut prendre en compte les paramètres de la ligne de commande,

$0 = nom du script, $1 = 1° paramètre, $2 = 2° paramètres etc…

# !/bin/bash
PATH=/usr/local/bin;/bin;/sbin;/usr/local/sbin;/usr/bin
echo $0 est lancé avec les paramètres $1 et $2

case “$1″ in
start)
echo starting
;;

case “$1″ in
stop)
echo stopping
;;

case “$1″ in
*)
echo rien à faire je ne comprends que start ou stop
;;

Evidemment, là ça manque d’intérêt, il faut lui faire faire des vraies choses au script mais bon, c’est un squelette qui fonctionne, à vous de le peupler.

Faire démarrer un script au moment du boot et le couper à son arrêt

Le placer dans /etc/init.d et ensuite faire un lien dans /etc/rc3.d et un autre dans /etc/rc6.d :

cp script.sh /etc/init.d
ln -s /etc/init.d/script.sh /etc/rc3.d/S99_myscript
ln -s /etc/init.d/script.sh /etc/rc3.d/K99_myscript
ln -s /etc/init.d/script.sh /etc/rc6.d/S99_myscript
ln -s /etc/init.d/script.sh /etc/rc6.d/K99_myscript

si vous avez le case avec les start et stop dans le script, le système lancera automatiquement le start tout à la fin du boot et stoppera juste au redémarrage.

Comment lire un fichier ligne par ligne

Préambule

Une des erreurs les plus communes dans l’apprentissage des scripts « bash » sous GNU/LInux pour lire un fichier ligne par ligne, est d’utiliser une boucle « for » (for line in $(cat file.txt); do …), ce qui dans cet exemple conduit à une évaluation, non pas de chaque ligne du fichier, mais de chaque mot ! Ce qui n’est pas du tout le but recherché…

Exemple de sortie avec une boucle « for » :

for line in $(cat file.txt); do echo "$line" ; done Ceci est la ligne n° 1 Ceci est la ligne n° 2 Ceci [...]

La solution consiste à utiliser une boucle « while » couplée à la commande interne « read ».

Mais il est cependant possible d’obtenir le me résultat avec une boucle « for » à condition de changer la valeur de la variable « $IFS » (Internal Field Separator, séparateur de champ interne) avant de lancer la boucle. C’est ce que nous verrons par la suite…

Boucle while

La boucle « while » reste la méthode la plus appropriée et la plus simple pour lire un fichier ligne par ligne.

Syntaxe

while read ligne do commande done < fichier

Exemple

Le fichier de départ :

Ceci est la ligne n° 1 
Ceci est la ligne n° 2 
Ceci est la ligne n° 3
Ceci est la ligne n° 4
Ceci est la ligne n° 5

Les instructions en ligne de commande :

while read line; do echo -e "$line\n"; done < file.txt

ou dans un script « bash » :

#! /bin/bash while read line do echo -e "$line\n" done < file.txt

La sortie sur l’écran (stdout) :

Ceci est la ligne n° 1
Ceci est la ligne n° 2
Ceci est la ligne n° 3
Ceci est la ligne n° 4
Ceci est la ligne n° 5

Astuces

Il vous est tout a fait possible à partir d’un fichier structuré (comme un carnet d’adresse ou /etc/passwd par exemple), de récupérer les valeurs de chaque champ et de les affecter à plusieurs variables avec la commande « read ». Attention toutefois de bien assigner à la variable « IFS » le bon séparateur de champ (espace par défaut).

Exemple :

#! /bin/bash while IFS=: read user pass uid gid full home shell do echo -e "$full :\n\ Pseudo : $user\n\ UID :\t $uid\n\ GID :\t $gid\n\ Home :\t $home\n\ Shell :\t $shell\n\n" done < /etc/passwd

Bonus

while read i; do echo -e « Paramètre : $i »; done < <(echo -e « a\nab\nc »)

Boucle for

Si la boucle « while » reste la méthode la plus simple, elle a toutefois un inconvénient majeur, à savoir qu’elle annihile le formatage des lignes et notamment les espaces et tabulations ;-\
Heureusement la boucle « for » couplée avec un changement d’IFS permet de garder la structure du document en sortie.

Syntaxe

oldIFS=$IFS # sauvegarde du séparateur de champ IFS=$’\n’ # nouveau séparateur de champ, le caractère fin de ligne for ligne in $(cat fichier) do commande done IFS=$old_IFS # rétablissement du séparateur de champ par défaut

Liste le(s) dernier(s) fichier(s) créé(s).

DIR/SINCE

ll -R | grep « mar 12 »

Liste les fichiers du 12 mars dans les directories inférieures

 

ls -ltr

Liste des fichiers par date croissante

ls -1t | head -1

Liste le dernier fichier créé dans un répertoire

ls -1t Save* | head -1

Liste le dernier fichier Save* créé dans un répertoire

ls -1t Save* | head -2

Liste les 2 derniers fichiers Save* créé dans un répertoire

 

TAR sous linux

echo « Compression de l’export… »

tar cfvz $TOM_HOME/exports/Export_$1_$TEMPS.tar.gz Export_$1_$TEMPS.txt

Décompression du tar

tar xfvz Export_20100111_080009.tar.gz


Tar, c’est l’anti connerie. On fait toujours un backup avant de faire quoique ce soit, tar permet de faire et défaire une archive. A l’origine il écrivait aussi sur des bandes mais on ne se sert que rarement de ce point. Vous aurez besoin de « tarer » (faire l’archive) et « détarer » (défaire l’archive). Au passage on en profite pour zipper avec le switch « z ».

Exemple d’usage de tar

tar -tf archive.tgz

tar -zcvf archive.tgz /var/www

tar -zxvf archive.tgz /var/www

En général tgz veut dire .tar.gz.

On peut aussi lier les commandes avec des pipes (prononcer païpe)

cat toto.txt | tar -cvf toto.tar –

Attention, tar est une des rares commandes Unix qui ait une syntaxe inversée destination / source au lieu du source/destination habituel.

Exemple .SH pour générer un .CSV

sqlplus FYTR_$1/fy$1 < $0.txt
SET echo off
SET termout off
SET feedback off
SET linesize 530
SET trimspool on
SET pagesize 0
SET colsep ‘;’

spool /rmanbackup/octal/extraction/cloture_std_prmof.tmp
select ‘NUM_OF;STATUT_OF;DT_CREAT;DT_LANC;DT_SOLDE;MOIS;SITE;CENTRE;CODE_ARTICLE;LIBELLE_ARTICLE;QTE_LANC;QTE_LIVR;P_UNI_MAT;P_UNI_TAF;P_UNI_MO;P_UNI_TOT;P_LAN_MAT;P_LAN_TAF;P_LAN_MO;P_LAN_TOT;REA_MAT;REA_TAF;REA_MO;REA_TOT;P_LIV_MAT;P_LIV_TAF;P_LIV_MO;P_LIV_TOT;REA_TOT-P_LIV_TOTecart_reel_std;DIRECT_STD;FRAIS_STD;STD;DT_STD;Direct_MAT;Direct_MO;Direct_TAF;Frais_MAT;Frais_MO;Frais_TAF;PRMOF;DT_PRMOF’ titre from dual;

select * from VFY_CLOTURE_STD_PRMOF;
spool off
exit
EOSQL

rm $0.txt
# suppression des lignes SQL
grep -v SQL /rmanbackup/octal/extraction/cloture_std_prmof.tmp > /rmanbackup/octal/extraction/cloture_std_prmof_$1.csv

#rm /rmanbackup/octal/extraction/cloture_std_prmof.tmp

vtcopy -i /rmanbackup/octal/extraction/cloture_std_prmof_$1.csv -o e:\\exploitation_vtom\\extraction_octal\\

exit 0

Vtom install client windows

Il est conseillé de faire l’installe dans L:\Soft\VTOM

Recupérer les fichiers Utilitaires pour le client VTOM dans C:\Users\eric.fougere\Documents\Vtom\Utilitaires pour le client VTOM

Copier les fichiers Utilitaires  tmail_tracking_issue.ini, tmai.ini, submit_aff.bat dans L:\Soft\VTOM\ABM\BIN

Modifier le fichier tmail.ini dans L:\Soft\VTOM\ABM\BIN

Modifier le nom de la machine : SenderName=VTOM _machine

  • Déplacer le fichier vtom.ini de L:\Soft\VTOM\ABM\BIN vers c:\windows\
    Eventuellement modifier les chemins des différentes entrées.
  • Démarrer les services AbsyssBatchManager et AbsyssManager en :
    srvWCTVtom@ad.wabtec.com
    YN6…
  • Ajout une règle dans le Firewall.
    Inbound Rules / New Rule
    Port (Next)
    30004, 30007, 30000 (Next)(Next)(Next)
    Name : Vtom(Finish)

    Ancienne procédure Install VTOM sur Windows 2008.pdf

Install zabbix agent Linux UBUNTU 2.2.1

wget http://repo.zabbix.com/zabbix/2.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_2.2-1+precise_all.deb

dpkg -i zabbix-release_2.2-1+precise_all.deb

apt-get update

 

 

 

 

alias ll=’ls -ltra’

Install the 64-bit Compatibility vs 32 bits.

if necessary. apt-get install ia32-libs

cat /etc/passwd

adduser zabbix

pwd : zabbixadm

addgroup zabbix admin

su – zabbix

cd /home/zabbix

download agent and server components, unpack:
wget http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.3/zabbix-2.2.3.tar.gz tar zxvpf zabbix-2.2.3.tar.gz

wget http://www.zabbix.com/downloads/1.8/zabbix_agents_1.8.linux2_6.i386.tar.gz tar zxvf zabbix_agents_1.8.linux2_6.i386.tar.gz*exit*

Copy agent files and create needed directories:

cd /home/zabbix/zabbix-1.8/
mkdir /etc/zabbix
mkdir /var/log/zabbix
chown -R zabbix.zabbix /etc/zabbix/
chown -R zabbix.zabbix /var/log/zabbix
cp /home/zabbix/zabbix-1.8/misc/conf/zabbix_agent* /etc/zabbix/
cp /home/zabbix/zabbix-1.8/bin/zabbix_get /usr/bin/
cp /home/zabbix/zabbix-1.8/bin/zabbix_sender /usr/bin/
cp /home/zabbix/zabbix-1.8/sbin/zabbix_agent /usr/sbin/
cp /home/zabbix/zabbix-1.8/sbin/zabbix_agentd /usr/sbin/

Edit zabbix agent configuration:

vi /etc/zabbix/zabbix_agentd.conf

#make sure server ip is correct:
Server=vmoni.ft.grp

Edit Services file :

vi /etc/services

#Add the following rules at the end:
zabbix_agent 10050/tcp # Zabbix ports
zabbix_trap 10051/tcp # Zabbix ports

Copy the init.d scripts:

cp /home/zabbix/zabbix-1.8/misc/init.d/debian/zabbix-agent /etc/init.d

Edit the script files :

vi /etc/init.d/zabbix-agent
#Change:
#DAEMON=/home/zabbix/bin/${NAME}
DAEMON=/usr/sbin/${NAME}

Set the correct permissions and set zabbix to start automatically:

chmod 755 /etc/init.d/zabbix-agent
update-rc.d zabbix-agent defaults

Stop / Start the agent:

To stop zabbix agent

./etc/init.d/zabbix-agent stop
Stopping Zabbix agent daemon: zabbix_agentd

To start zabbix agent

./etc/init.d/zabbix-agent start
Starting Zabbix agent daemon: zabbix_agentd

Check if the Agent is running:
ps -aux | grep -v grep | grep zabbix_agentd

zabbix 10302 0.0 0.0 3368 556 ? SN 14:32 0:00 /usr/sbin/zabbix_agentd
 zabbix 10303 0.4 0.0 3368 796 ? SN 14:32 0:00 /usr/sbin/zabbix_agentd
 zabbix 10304 0.0 0.0 3368 440 ? SN 14:32 0:00 /usr/sbin/zabbix_agentd
 zabbix 10305 0.0 0.0 3368 440 ? SN 14:32 0:00 /usr/sbin/zabbix_agentd
 zabbix 10306 0.0 0.0 3368 440 ? SN 14:32 0:00 /usr/sbin/zabbix_agentd
 zabbix 10307 0.0 0.0 3404 840 ? SN 14:32 0:00 /usr/sbin/zabbix_agentd
 zabbix 10323 0.0 0.0 7528 892 pts/1 R+ 14:32 0:00 grep zabbix_agent

Test 

Connect on vmoni with root account

cd /usr/local/bin

root@vmoni:~# zabbix_get -p 10050 -k agent.version -s servername

1.8

Must return the version of the zabbix agent.