Salut,
Suite à un souci technique je m’attache dorénavant à mettre en place une relève via agent Zabbix en mode actif de la température.
Parallèlement à cela je me suis remis à l’apprentissage du Python (trop longtemps délaissé).
Je bute à nouveau sur un manque de méthode pour dérouler correctement mon script
#!/usr/bin/python2.7
#################################################################
#
# zabbix-temp-discover.py
#
# A program that produces LLD information for Zabbix to
# processor.
#
# Version: 1.0
#
#################################################################
import sys
import os
import subprocess
import string
import re
#################################################################
# sys.argv[1] - the cpu ID
#################################################################
def cputemp():
cmd=cmd.split(':')[0].split()
temp=re.sub(r'[^\d\.]', '',cmd)
tempvalue = temp
return tempvalue
def cpuid():
cmd=cmd.split()
cpu=re.sub(r':', '',cmd[3])
cpuvalue = cpu
return cpuvalue
for line in open(cmd, 'r'):
if re.match(cid, line):
return line
result = line().cpuid().cputemp()
temperature = result
return temperature
else:
print ''
print temperature
cmd=("sensors | grep Physical ")
cid=sys.argv[1]
J’ai déjà en place un script de découverte qui me remonte bien le nombre de socket physique plus tout un tas d’informations, j’ai donc la possibilité d’attribuer une variable pour le processeur physique dont je cherche à récupérer la température.
Actuellement je travaille pour plus de souplesse (rien à installer) avec la commande sensors.
la commande ne question sur un serveur de test (mono processeur) me renvoie ceci :
# sensors
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +66.0°C (high = +87.0°C, crit = +97.0°C)
Core 0: +64.0°C (high = +87.0°C, crit = +97.0°C)
Core 1: +66.0°C (high = +87.0°C, crit = +97.0°C)
Core 2: +65.0°C (high = +87.0°C, crit = +97.0°C)
Core 3: +66.0°C (high = +87.0°C, crit = +97.0°C)
Core 4: +66.0°C (high = +87.0°C, crit = +97.0°C)
Core 5: +63.0°C (high = +87.0°C, crit = +97.0°C)
Je cherche donc à identifier la ligne puis à parser cette dernière selon l’argument que je possède à savoir pour ce serveur de tests Physical id 0
Le script actuellement ne me renvoie rien comme information pourtant il me semble que mes deux fonctions fassent correctement le travail, je penche donc pour un souci sur le traitement en lui même du script :
File "/usr/local/bin/zabbix-cpu-stats.py", line 39
return line
SyntaxError: 'return' outside function
Je manque malheureusement de temps pour finaliser mon apprentissage du python et ainsi mieux cerner là où je bloque.
Si quelqu’un pouvez me montrer la voie à suivre avec une explication de la où j’ai merdé ce serait super !