Problème plugin python avec module paramiko et scp sur Nagios

Fermé
remsky Messages postés 1 Date d'inscription mardi 17 septembre 2013 Statut Membre Dernière intervention 17 septembre 2013 - Modifié par mamiemando le 18/09/2013 à 20:28
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 - 18 sept. 2013 à 20:33
voila j'ai un serveur distant qui recolte des données dans un fichier et j'ai mon serveur de prod nagios (CentOS) j'ai crée un plugin en python qui fait un ssh sur le serveur distant et scp du fichier sur nagios et ensuite fait un parse des données du fichier avec gestion des alertes etc...

le probleme c'est que en ligne de commande mon plugin marche mais quand je l'implemente sur nagios sa ne marche pas il ne "scp" pas le fichier en question:

voila le debut du code python avec le module scp et paramiko :

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#########script permettant de recuperer les données des fichiers OIF d'omni fonction GPS#############################

import sys
import os
import paramiko
import scp
#passage du fichier en argument

try:
fichier = sys.argv[1]
except IndexError:
print"""
plugin GPS Nagios pour fichiers .oif des stations
usage : check_oif_files_gps.py [NOM DE LA STATION]
"""
sys.exit(1)

#connection en ssh a omni

from paramiko import SSHClient
from scp import SCPClient

server='mon serveur'
port=22
user='toto'
password='titi'

def createSSHClient(server, port, user, password):
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(server, port, user, password)
return client

ssh = createSSHClient(server, port, user, password)


#copie du fichier oif d'omni au serveur nagios

scp = SCPClient(ssh.get_transport())
scp.get('/home/omni/%s/%s.oif' % (fichier, fichier))
ssh.close()

quelqu'un a-t-il une solution ?

merci d'avance
A voir également:

1 réponse

mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 752
18 sept. 2013 à 20:33
Le truc qui serait pas mal c'est de comprendre à quel endroit le script plante. On peut imaginer que pour ça tu fasses un gros "try ... except Exception e:" qui englobe ton programme et écrive l'éventuelle exception rattrapée dans un fichier quelconque (mettons /tmp/toto).

En outre les import peuvent lever une exception ImportError, peut-être que nagios n'instancie pas ton script comme tu le crois et du coup tout plante. De plus, si nagios lance ton programme sans argument, ton script plantera. Ici aussi, cette exception devrait être logguée dans un fichier quelconque pour s'assurer qu'elle n'a pas lieu...

Bonne chance
0