Merci pour ta réponse.
Ce que j'ai fait.
J'ai déplace le dossier /weather-2.3 ds /usr/local/bin et adapté le script
je test le script .sh en direct:
airvb@airvb-serveur:~$ /usr/share/munin/plugins/chaudiere.sh
ESSAI
temp1.value 26.1
temp2.value 31.4
lfpo.value 30
difference.value 49
delta.value 5
airvb@airvb-serveur:~$
Tout fonctionne
Si je lance via munin-run, :
La lecture via le script weather est ok. GOOD !
En revanche le message d'erreur pour l'enregistrement de cette donnée ds un fichier log à changé.
airvb@airvb-serveur:~$ munin-run chaudiere
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or other units.
Authenticating as: airvb
Password:
==== AUTHENTICATION COMPLETE ===
ESSAI
/etc/munin/plugins/chaudiere: line 14: /usr/local/bin/pcsensor.log: Read-only file system
temp1.value 26.1
temp2.value 31.4
lfpo.value 30
Je précise que j'ai changé l'emplacement d'enregistrement de ce fichier log ds /usr/local/bin avec les droits suivant :
airvb@airvb-serveur:~$ ls -al /usr/local/bin | grep pcsensor.log
-rwxrwxrwx 1 root root 24 Aug 9 11:00 pcsensor.log
Un peu plus loin j'enregistre une valeur ds un fichier texte et c'est "permission denied" comme avant.
cat: /home/airvb/chaudiere/heurechaud.txt: Permission denied
Tentrative des fois que avec un sudo munin-run
C'est pareil ,
Et chose étrange j'accède a ce serveur via ssh pour lancer mes différentes commandes,
Une fois la commande lancée le script ne se termine pas et le terminal devient inutilisable ... weird !
Ensuite suite à ta remarque j'ai replongé ds plugins-conf.d/munin-node
j'ai tenté :
[chaudiere]
user airvb
group airvb
En pensant que comme le script lancé directement fonctionne ...
pas mieux
J'ai tenté
[chaudiere]
user root
Et tjs pareil :
airvb@airvb-serveur:~$ munin-run chaudiere
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or other units.
Authenticating as: airvb
Password:
==== AUTHENTICATION COMPLETE ===
ESSAI
/etc/munin/plugins/chaudiere: line 14: /usr/local/bin/pcsensor.log: Read-only file system
temp1.value 26.2
temp2.value 31.4
lfpo.value 33
cat: /home/airvb/chaudiere/heurechaud.txt: No such file or directory
En final, je progresse la temperature est bien lu via le script weather , en revanche chaque enregistrement que fait le script ds un fichier ne se fait pas avec en fonction de son emplacement d’enregistrement un msg différent !
Read-only file system ds /usr/bin/local
et
denied sur mon home
Des idées ?
Mci encore
le script en entier .
#!/bin/bash
## TEST
echo "ESSAI"
param="lfpo -nm"
lfpo=$(/usr/local/bin/weather-2.3/weather --setpath /usr/local/bin/weather-2.3/ $param | grep Temperature)
#echo "lfpo" $lfpo
lfpo=$(echo $lfpo | sed -e 's/[^-.0-9]//g')
lfpo=$((lfpo+0))
# check si ok ds log
heure=$(date +%H:%M:%S)
echo $lfpo $heure >> /usr/local/bin/pcsensor.log
# Where is pcsensor located?
PCSENSOR="/usr/local/bin/temper-poll"
if [ ! -e ${PCSENSOR} ]; then
echo "Temper-poll executable not found" >&2
exit -1
fi
# avant
#echo "delta.warning 1:"
#echo "delta.critical -1:"
PCSENSOR="/usr/local/bin/temper-poll -c"
if [ "${1}" = "config" ]; then
echo "graph_title USB Thermometer 2"
echo "graph_scale no"
echo "graph_vlabel Celsius"
echo "graph_category sensors"
echo "graph_info Chaudiere"
# echo "graph_data_size custom 1h, 1d for 1w, 1w for 1m, 1m for 1y"
# echo "update rate 120"
echo "temp1.label Temp EXTerne"
echo "temp1.type GAUGE"
echo "temp1.info Temp EXTerne"
echo "temp1.colour 00FF00"
echo "temp1.draw LINE2"
echo "temp2.label Temp INTerne"
echo "temp2.type GAUGE"
echo "temp2.info Temp INTerne"
echo "temp2.colour FF3DBE"
echo "temp2.draw LINE2"
echo "lfpo.label LFPO Deg C"
echo "lfpo.type GAUGE"
echo "lfpo.draw LINE1"
# echo "temp2.warning 22:"
# echo "temp2.critical 21.40:"
# echo "temp2.warning 22:"
# echo "lfpo.colour 8BC34A"
echo "delta.label FLAG ALERTE"
echo "delta.type GAUGE"
echo "delta.warning 2"
echo "delta.critical 5"
echo "delta.draw LINE1"
echo "delta.colour FFED00"
echo "delta.info 0:OK 2:WARN 5:CRIT"
# echo "alerte.label Alerte"
# echo "alerte.type GAUGE"
echo "difference.label H depuis chauffe"
echo "difference.info Depuis derniere chauffe"
echo "difference.type GAUGE"
echo "difference.colour 0012FF"
echo "difference.draw LINE1"
echo "difference.draw AREA"
else
# 1er sensor EXTERNE
TEMP1=`${PCSENSOR} | sed '1 d'`
if [[ $? != 0 ]]; then
sleep 2
TEMP1=`${PCSENSOR} | sed '1 d'`
if [[ $? != 0 ]]; then
sleep 6
TEMP1=`${PCSENSOR} | sed '1 d'`
fi
fi
# 2ieme sensor
TEMP2=`${PCSENSOR} | sed '2 d'`
if [[ $? != 0 ]]; then
sleep 2
TEMP2=`${PCSENSOR} | sed '2 d'`
if [[ $? != 0 ]]; then
sleep 6
TEMP2=`${PCSENSOR} | sed '2 d'`
fi
fi
echo "temp1.value $TEMP1"
echo "temp2.value $TEMP2"
echo "lfpo.value $lfpo"
#echo ${TEMP1%%.*}
#echo ${TEMP2%%.*}
# passage en integer
TEMP2="${TEMP2%%.*}"
#test
#TEMP2=49
#echo "TEMP2 (interne) :" $TEMP2
if [ "$TEMP2" -ge 48 ] ; then
# on enregistre date heure
# date '+%Y%m%d%H%M%S'
date '+%Y%m%d%H%M%S' | tee /home/airvb/chaudiere/heurechaud.txt
echo `date +%Y/%m/%d-%H:%M:%S`
# reset alerte
alerte=0
echo "$alerte" | tee /home/airvb/chaudiere/alerte.txt
else
# on verifie si pas superieur à 24 h depuis la derniere chauffe
lastchauffe=`cat /home/airvb/chaudiere/heurechaud.txt`
#echo "lastchauffe:" $lastchauffe
maintenant=`date '+%Y%m%d%H%M%S'`
#echo "maintenant:" $maintenant
difference=`dateutils.ddiff -i '%Y%m%d%H%M%S' $lastchauffe $maintenant`
# echo "difference :" $difference " en seconde "
# passage en integer
difference="${difference%%s*}"
#echo "difference :" $difference
# on garde juste le digit des heures ecoules depuis la derniere chauffe
difference=`printf '%dh:%dm:%ds\n' $(($difference/3600)) $(($difference%3600/60)) $(($difference%60)) | sed 's/h.*//'`
echo "difference.value $difference"
if [ "$difference" -ge 24 ] ; then
echo "delta.value 5"
# plus de 24h depuis derniere chauffe
# delta critical 5
elif [ "$difference" -ge 16 ] ; then # 57600
# plus de 16h depuis derniere chauffe
# delta warning 2
oldalerte=`cat /home/airvb/chaudiere/alerte.txt`
echo "Old alerte :" $oldalerte
alerte=$(($oldalerte+1))
#echo "alerte :" $alerte
if [ "$alerte" -eq 1 ] ;then
# on previent
# delta warning
echo "delta.value 2"
echo "$alerte" | tee /home/airvb/chaudiere/alerte.txt
elif [ "$alerte" -le 12 ] ; then # 12
echo "$alerte" | tee /home/airvb/chaudiere/alerte.txt
else
# passer 12 on prévient à chauqe fois
echo "delta.value 2"
echo "$alerte" | tee /home/airvb/chaudiere/alerte.txt
fi
else
echo "delta.value 1"
alerte=0
# delta ok
fi
# echo "alerte.value $alerte"
fi
# "temp1.label Temp EXTerne"
# "temp2.label Temp INTerne"
# difference entrel a T interieur et exterieur de la chaudiere
# si proche de 0 alerte
#delta=$((${TEMP2%%.*} - ${TEMP1%%.*}))
# test temp neg pour alerte
# delta="$((delta * -1))"
#echo "delta.value $delta"
fi