Bonjour
Je suis en train de passer mon installation Jeedom depuis une machine physique NUC sur Debian 10 vers un Jeedom Debian 11 sur Proxmox (aussi sur un NUC Intel).
J’ai un script qui s’exécute normalement sur la machine en v10 mais se plante sur la machine en v11 avec le message :
Erreur sur /var/www/html/plugins/script/data/PyEmVue/PyEmVue.PY 2>&1 valeur retournée : 127. Détails : sh: 1: /var/www/html/plugins/script/data/PyEmVue/PyEmVue.PY: not found
Bien entendu, j’ai vérifié que PyEmVue.PY existait bien dans le répertoire spécifié. J’ai même recréé le script en allant chercher le .PY dans son répertoire.
Quand je lance le script en ligne de commande depuis son répertoire avec python3 PyEmVue.PY, en root, il s’exécute sans souci.
Quand je le lance avec mon utilisateur Debian, il se plante :
Traceback (most recent call last):
File "/var/www/html/plugins/script/data/PyEmVue/PyEmVue.PY", line 34, in <module>
vue.login(username=user, password=passuser, token_storage_file=token)
File "/usr/local/lib/python3.9/dist-packages/pyemvue/pyemvue.py", line 207, in login
self.auth = Auth(
File "/usr/local/lib/python3.9/dist-packages/pyemvue/auth.py", line 51, in __init__
self.tokens = self.refresh_tokens()
File "/usr/local/lib/python3.9/dist-packages/pyemvue/auth.py", line 59, in refresh_tokens
self.token_updater(tokens)
File "/usr/local/lib/python3.9/dist-packages/pyemvue/pyemvue.py", line 231, in _store_tokens
with open(self.token_storage_file, 'w') as f:
PermissionError: [Errno 13] Permission denied: 'keys.json'
J’ai essayé de renommer le keys.json pour qu’il en génère un autre, mais même log.
J’ai essayé de donner les droits (je comprends qu’il ne faut jamais faire ça, mais…) avec des chmod 766 sur les fichiers du répertoire (et le répertoire lui même), mais même chose.
Vu que c’est le même compte et mdp qui sont définis en début de script pour se connecter, et les mêmes que sur Debian 10 où ça fonctionne pour tous les utilisateurs, je pense que c’est un problème de droits, ou alors un changement entre debian 10 et 11 (j’ai cru voir que c’est Python 3.9 en Debian 11 et que c’était 3.7 en 10)
Je suis hélas totalement incompétent en Linux, tout ce que je sais faire c’est de copier sans jamais vraiment les comprendre des commandes données d’un forum à l’autre.
Je vous passe aussi tout le scrip (après y avoir changé bien sur mes identifications) :
#!/usr/bin/python3.7
# Script recupere infos de PyEmVue
# import librairies
import sys, os
# Variables de connexion
user = "MonMail@MonProvider.ext"
passuser = "MonMotdePasse"
duree = "1MIN"
token = 'keys.json'
resultat = "PyEmVue.log"
# recupere la date et l'heure actuelle
from datetime import datetime
now = datetime.now()
ma_date = now.strftime("%d/%m/%Y %H:%M:%S")
from pyemvue import PyEmVue
def print_recursive(usage_dict, info, depth=0):
for gid, device in usage_dict.items():
for channelnum, channel in device.channels.items():
name = channel.name
if name == 'Main':
name = info[gid].device_name
print('-'*depth, f'{gid} {channelnum} {name} {channel.usage} kwh')
fichier.write(f'{gid} {channelnum} {name} {channel.usage} kwh\n')
if channel.nested_devices:
print_recursive(channel.nested_devices, depth+1)
vue = PyEmVue()
vue.login(username=user, password=passuser, token_storage_file=token)
devices = vue.get_devices()
device_gids = []
info = {}
# Fichier pour ecrire le resultat
PyEmVueFile = os.path.abspath(os.path.dirname(sys.argv[0])) + "/" + resultat
fichier = open(PyEmVueFile, "a")
#fichier.write("Date " + ma_date)
fichier.write("Date " + ma_date + "\n")
for device in devices:
if not device.device_gid in device_gids:
device_gids.append(device.device_gid)
info[device.device_gid] = device
else:
info[device.device_gid].channels += device.channels
device_usage_dict = vue.get_device_list_usage(deviceGids=device_gids, instant=None, scale=duree, unit="KilowattHours")
print_recursive(device_usage_dict, info)
fichier.write("\n*** C'est fini ***")
fichier.close()
# Supprime le fichier si il n'y a pas d'infos PyEmVue
if not(device_gids):
if os.path.exists(PyEmVueFile):
os.remove(PyEmVueFile)
exit
J’ai même essayé de refaire toute l’install de ce script et de ses dépendances, pour un résultat pire qui m’a obligé à restaurer un snapshot.
SI quelqu’un peut être assez sympa pour m’aider. C’est le dernier truc qui me manque pour migrer sur la nouvelle machine. J’enrage de ne pas trouver.
Merci beaucoup