IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

[SSH] Appel de commande AWK dans un Bash en SSH


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Par défaut [SSH] Appel de commande AWK dans un Bash en SSH
    Bonjour,

    Faisant suite à mon précédent appel à l'aide sur le forum, je souhaiterais à présent pouvoir lancer des commandes en AWK et en déporté via SSH sur une liste de serveurs fournie dans un fichier en entrée.
    Le but serait d'avoir une sorte de buletin de santé des serveurs (espace disque et mémoire), sachant qu'il y a en a beaucoup et de renvoyer ce rapport par email :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    # ! /bin/bash
    #	Espace disque occupés de tous les FS d'une machine (seuils d'alerte et d'erreur en paramètres à changer)
    #	MC le 01/10/2019
     
    # Variables
    fichier="test.txt"		#Fichier en entrée
    email="mon.adresse.email.fr" #Destinataire du message
     
    seuilerr=90             #Seuil d'erreur a*modifier (poucentage d'occupation du disque)
    seuilwarn=70    		#Seuil de warning a*modifier (poucentage d'occupation du disque)
     
     
    while IFS= read -r ligne
    do
     
    	machine="root@"$ligne		
     
    	#Ouverture du canal
     
    	# Espace disque disponible : gestion des alertes
    	dfree=$(ssh -p $machine df -Pm | awk -v err=$seuilerr -v att=$seuilwarn '
    					NR>1 {total+=$2; utilise+=$3; dispo+=$4;
    							if (+$5>err){printf " => ALERTE  : %15s OCCUPE A : %4d% KO\n", $6, $5 }
    							else if (+$5>att){printf " => WARNING : %15s OCCUPE A : %4d% OK\n", $6, $5 }
    							else {printf " => NOTE    : %15s OCCUPE A : %4d% OK\n", $6, $5 }}
    					END{print " => Taille totale du disque : " total " Mo - Utilisee : " utilise " Mo - dispo : " dispo " Mo"}')
     
    	# Mémoire disponible : pour information
    	mfree=$(ssh -p $machine vmstat 1 2 -S M | awk 'END {print " => Disponibilité du CPU : "$15"% - Mémoire disponible : "$4" Mo"}')				
     
    	message="\n
    	###################\n
    	Nom de la machine : $machine . \n
    	###################\n
    	$dfree  \n 
    	$mfree  \n"
     
    	# Programme principal
    	if [ $(echo $dfree | grep -c ALERTE) -gt 0 ]
    	then
    		echo -e "$message" | /usr/bin/mutt -x -s "Espace disque presque sature sur : " . $machine $email >/dev/null 2>&1
    	fi
     
    done < "$fichier"
     
     
    # Fin
    exit 0
    Comme la dernière fois, si jamais vous aviez des observations ou des suggestions d'autres indicateurs à faire ressortir en plus de mon code, n'hésitez pas.

    Par avance merci.

    Marco.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 636
    Par défaut
    Bonjour,

    le script que tu montres ne fonctionne pas comme tu le souhaites ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Par défaut
    Bonsoir,

    En fait, je ne suis pas très certain du fonctionnement et je ne peux pas complètement tester de manière optimale.
    Pourrais-tu en particulier me donner ton avis sur la manière donc je fais les appels SSH s'il te plaît ?

    Bonne soirée,
    Marco.

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 636
    Par défaut
    je ferais le traitement awk en local :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssh -p "$port" "$serveur" 'command' | awk ...
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Par défaut
    Bonjour,

    Tout d'abord, merci de ta réponse.

    En fait ce sont des données que je souhaite récupérer sur une liste de serveur (connecté en SSH), les formater (dans mon AWK) et les concaténer pour les envoyer en une seule fois par email.
    Mais peut-être que je m'y prends mal ? ou bien est-ce trop verbeux tel que je le fais ?

    En tout les cas, mon manque d'expérience dans ce domaine fait que je ne sais pas trop où chercher. Si il y a d'autre commandes avec des résultats intéressants, je suis aussi preneur ?

    Ça me permettrait d'avoir une sorte de bilan de santé de ces serveurs, sachant qu'il y a en a beaucoup et d'orienter les investigations en cas de soucis.

    Bonne journée,
    Marco.

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 636
    Par défaut
    on ne peut pas valider un traitement de données sans données.

    des œufs, de la farine, du beurre et du sucre, ça fait une pâte, mais sans le grammage, on ne peut pas dire a priori si ce sera savoureux, ou seulement comestible.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Appels de commandes DOS dans sqlplus
    Par daniel7 dans le forum Sql*Plus
    Réponses: 2
    Dernier message: 17/11/2008, 18h48
  2. Appeller des commandes unix dans du PL/SQL
    Par stepd dans le forum PL/SQL
    Réponses: 2
    Dernier message: 08/03/2008, 14h52
  3. Appeler une commande nommée dans une variable
    Par kwakanar dans le forum Programmation (La)TeX avancée
    Réponses: 1
    Dernier message: 03/03/2008, 15h29
  4. commande awk dans script perl
    Par sorilazer dans le forum Langage
    Réponses: 3
    Dernier message: 19/07/2007, 10h16
  5. Réponses: 1
    Dernier message: 14/03/2007, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo