Configuration onduleur (NUT)

Tags: #<Tag:0x00007f50a022c3b8>

Hello à tous,

Je viens d’investir dans un onduleur (un Eaton 3s) sur lequel j’ai branché un raspberry-pi (Raspbian 9.9 et Yunohost 3.6) en suivant ce tuto .

Tout fonctionne nickel mais en jouant (ma question est donc pas hyper urgente donc…) avec les différentes commandes je me rends compte que je ne peux pas modifier la variable battery.charge.low via la commande :

# upsrw -s battery.charge.low=35 -u upsmonitor -p mot-de-passe eaton@localhost (j’ai utilisé les mêmes username que dans le tuto).

qui me renvoie systématiquement le message d’erreur suivant:
Unexpected response from upsd: ERR ACCESS-DENIED

En parcourant la doc, j’ai déjà corrigé quelques erreurs/oublis:

  • J’ai ajouté la ligne actions = SET au fichier /etc/nut/upsd.users pour autoriser [upsmonitor] la modification des variables via upsrw
  • Vérifié le contenu des fichiers upsmon.conf et upsd.users (username et mdp)
  • Checké que la variable battery.charge.low était effectivement paramétrable via upsrw eaton (c’est le cas)
  • Modifié (un peu par désespoir) les droits en rajoutant de l’écriture au groupe nut dans le dossier nut/ avec un chmod 660 /etc/nut/*

sans succès, et j’admets sécher un peu à présent :sweat_smile:

Comme ça fait pas mal de temps que je tourne en rond je me dis que je suis peut-être passé à côté de quelque-chose de simple donc je m’en remets à vous \0/

Merci d’avance
tufek

1 J'aime

Bonjour,

C’est eaton@localhost qui se voit refuser l’accès.
Peut-être que eaton@127.0.0.1 aurait plus de chance.

J’ai déjà eu à faire à ce genre de mic-mac et d’ailleurs il faut que je m’y replonge ;
pour vérifier que c’est bien fonctionnel (buster oblige)

Pour preuve de la bizarrerie :

root@n40l:~# upsrw -s battery.charge.low=35 -u admin -p mdp MGE600@localhost
Error: Connection failure: Connection refused
root@n40l:~# upsrw -s battery.charge.low=35 -u admin -p mdp MGE600@127.0.0.1
OK
root@n40l:~# 

Je pense que cela peut venir de la directive LISTEN du /etc/nut/upsd.conf

J’ai la même chose pour :

root@n40l:~# upsc MGE600@localhost
Error: Connection failure: Connection refused
root@n40l:~#

En fait, j’avais une coquille dans mon /etc/hosts pour l’IP de localhost.
Les commandes avec localhost fonctionnent désormais. :wink:

Je ne t’aide pas vraiment avec cette simple erreur :pensive:

Je donne les droits sur mes fichiers :

root@n40l:~# ls -l /etc/nut/ups.conf /etc/nut/nut.conf /etc/nut/upsd.conf /etc/nut/upsd.users /etc/nut/upsmon.conf 
-rw-r----- 1 root nut  1545 sept. 16  2015 /etc/nut/nut.conf
-rw-r----- 1 root nut  4763 oct.  26  2017 /etc/nut/ups.conf
-rw-r----- 1 root nut  4718 sept. 16  2015 /etc/nut/upsd.conf
-rw-r----- 1 root nut  2241 août  13 12:38 /etc/nut/upsd.users
-rw-r----- 1 root nut 15930 août  13 15:16 /etc/nut/upsmon.conf
root@n40l:~#  ls -ld /etc/nut/
drwxr-xr-x 2 root nut 4096 août  13 15:46 /etc/nut/
root@n40l:~# 

Je n’ai pas encore de règle udev de définie pour mon onduleur MGE600 en USB.
Comme pour aucun périphérique il me semble bien.

root@n40l:~# service udev status
● systemd-udevd.service - udev Kernel Device Manager
   Loaded: loaded (/lib/systemd/system/systemd-udevd.service; static; vendor preset: enabled)
   Active: active (running) since Tue 2019-08-13 14:37:02 CEST; 49min ago
     Docs: man:systemd-udevd.service(8)
           man:udev(7)
 Main PID: 342 (systemd-udevd)
   Status: "Processing with 24 children at max"
    Tasks: 1
   Memory: 31.7M
   CGroup: /system.slice/systemd-udevd.service
           └─342 /lib/systemd/systemd-udevd

août 13 14:37:02 n40l systemd[1]: Started udev Kernel Device Manager.
août 13 14:37:02 n40l systemd-udevd[347]: Using default interface naming scheme 'v240'.
août 13 14:37:02 n40l systemd-udevd[347]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
août 13 14:37:02 n40l mtp-probe[368]: checking bus 4, device 2: "/sys/devices/pci0000:00/0000:00:12.0/usb4/4-3"
août 13 14:37:02 n40l mtp-probe[368]: bus: 4, device: 2 was not an MTP device
août 13 14:37:02 n40l mtp-probe[369]: checking bus 4, device 5: "/sys/devices/pci0000:00/0000:00:12.0/usb4/4-5"
août 13 14:37:02 n40l mtp-probe[369]: bus: 4, device: 5 was not an MTP device
août 13 14:37:02 n40l mtp-probe[372]: checking bus 4, device 4: "/sys/devices/pci0000:00/0000:00:12.0/usb4/4-4/4-4.1"
août 13 14:37:02 n40l mtp-probe[372]: bus: 4, device: 4 was not an MTP device
août 13 14:37:02 n40l systemd-udevd[348]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
root@n40l:~# lsusb
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 005: ID 0463:ffff MGE UPS Systems UPS
Bus 004 Device 004: ID 05ac:0205 Apple, Inc. Extended Keyboard [Mitsumi]
Bus 004 Device 003: ID 05ac:1002 Apple, Inc. Extended Keyboard Hub [Mitsumi]
Bus 004 Device 002: ID 046d:c077 Logitech, Inc. M105 Optical Mouse
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
root@n40l:~# 

Pour finir, je m’aperçois que l’utilisateur nut fait partie du groupe root :

root@n40l:~# grep nut /etc/group
root:x:0:nut
nut:x:127:
root@n40l:~# 

Merci d’avoir pris le temps de lire et répondre! \o/

Ah je n’y avais pas pensé, mais non ça n’a pas fonctionné (=_=)

D’ailleurs les commande upsc eaton@localhost et upsrw eaton@localhost fonctionnent bien en me donnant respectivement l’état de l’onduleur et la liste des variables théoriquement customisables avec upsrw.
Et mon message d’erreur indique bien un ACCESS-DENIED edit: comme si j’avais mal renseigné mon utilisateur dans upsd.users

Mêmes droits pour les miens

J’ai tenté de rajouter nut à root, mais sans effet. Par contre j’obtiens une sortie différente:

  admin@rqspbr:~ $ grep nut /etc/group
        root:x:0:nut
        nut:x:130:

Pour ma culture, que signifient les x et chiffres 127 ou 130 pour moi? Il faut les déduire de 777 pour obtenir les droits utilisateurs ou qqch du genre?

Ce sont les numéros de groupe
Considérez

fp2@debpacha:~$ id
uid=1000(fp2) gid=1000(fp2) groupes=1000(fp2),4(adm),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),108(netdev),114(bluetooth),115(lpadmin),119(scanner),126(fuse)

fp2@debpacha:~$ getent group audio
audio:x:29:pulse,fp2
fp2@debpacha:~$ getent group 29
audio:x:29:pulse,fp2
fp2@debpacha:~$ 

Avec la commande getent vous pouvez obtenir les membres d’un groupe en donnant soit le nom du groupe, soit le numéro.

fp2@debpacha:~$ getent passwd 1000
fp2:x:1000:1000:F. Petitjean,,,:/home/fp2:/bin/bash
fp2@debpacha:~$ 

Utilisateur principal avec le numéro 1000. Sir certains systèmes l’identification des utilisateurs est centralisée sur un serveur NIS ou LDAP (ou Active Directory, ou …) Dans ce cas la commande getent permet d’avoir les informations (qui ne sont pas dans /etc ).

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة


F. Petitjean
Ingénieur civil du Génie Maritime.

« On ne perd pas son temps en aiguisant ses outils. »
Proverbe français

« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » (R. Devos)

2 J'aime

Je suis bien d’accord.

comme si j’avais mal renseigné mon utilisateur dans upsd.users

« mot-de-passe » ne me semble pas très correct comme mot de passe.

Le nom d’utilisateur comme le mot de passe ne doivent être constitués que de lettres
et éventuellement de chiffres ; sans caractère spécial ou accentué.

Voici mon /etc/nut/upsd.users (partie utile)

[admin]
    password = mdp
    upsmon master
    actions = SET
    instcmds = ALL

Où le nom d’utilisateur et le mot de passe sont simplifiés au maximum.
Les majuscules et les minuscules sont considérées différemment pour ces deux valeurs ;
Aka : sensibles à la casse.

Il sont reproduits dans /etc/nut/upsmon.conf (partie utile)

MONITOR MGE600@127.0.0.1 1 admin mdp master

Merci de donner tes extraits utiles @ttufekk

C’est une information cachée ; ici le mot de passe du groupe il me semble.
Inutiles vraisemblablement mais ces « x » sont intouchables.

Numéros de groupes comme littlejohn75 l’explique.

Non, cela n’a rien à voir : rien du tout.
C’est juste un numéro qui identifie un groupe autrement que par son nom.
Tout comme peut l’être un utilisateur.

Une autre solution en passant par /etc/nut/ups.conf (partie utile)

[MGE600]
       driver = usbhid-ups
       port = auto
       desc = "Ellipse 600 MAX"
       # les valeurs définies ci-dessous deviennent en lecture seule
       default.battery.voltage.high = 13.6
       default.battery.voltage.low = 12
       default.battery.charge.low = 80

L’utilisateur nut n’a rien à faire dans le groupe root, alors :

root@n40l:~# gpasswd -d nut root
Removing user nut from group root
root@n40l:~#

Mes onduleurs avec batteries auto PbAc 45 Ah :
https://forum.macbidouille.com/index.php?s=&showtopic=371927&view=findpost&p=4190801

Après des modifications de configuration et pour redémarrer NUT sans redémarrer la machine :

systemctl restart nut-driver.service
systemctl restart nut-server.service
systemctl restart nut-monitor.service
2 J'aime

Génial, c’est ça. Je ne savais pas qu’il fallait redémarrer les différents services pour que le système prenne en compte la correction des coquilles (edit: je me disais bien qu’il y avait forcément une erreur bête ^^).
Merci!!

2 J'aime