Partager un onduleur (Eaton 3S 850) entre un Synology et un Asustor

@Dami1 j'ai ouvert un ticket, si des fois c'était possible de partager un même onduleur USB entre deux NAS de marques différentes : un Syno et l'Asustor.
 
@shaks2022
Je crois que j'ai trouvé comment faire :)
Mais ça nécessite de jouer avec la ligne de commande, et de modifier certains fichiers, après avoir arrêté le démon upsmon, puis ensuite de le relancer.

Tu sembles assez doué avec les lignes de commandes, peut-être pourras-tu m'aider à faire un script de modification des fichiers :
  • upsmon.conf
  • upssched.conf
Car il faudra modifier quelques lignes dans ces fichiers.
Perso, moi j'ai modifié avec nano, et j'ai sauvegardé ces fichiers en les archivant, je les restaurerais ensuite au besoin (donc après chaque reboot, via un script que je vais faire à la manière de celui qui me lance la machine virtuelle à chaque démarrage du NAS ^^).
Je ne maitrise pas la commande sed ou compagnie. Et je pense que ça pourrait être ce qu'il faut.

Dans le fichier upsmon.conf, il faut modifier la deuxième ligne, celle qui commence par MONITOR, pour remplacer :
MONITOR asustor@192.168.2.200 1 admin 1111111 slave
par :
MONITOR ups@192.168.2.200 1 monuser secret slave

Il y a encore quelques lignes à changer, mais pour ça il faut que je retrouve le fichier d'origine, après un reboot... je ferais ça demain.

Code:
RUN_AS_USER root
MONITOR ups@192.168.2.200 1 monuser secret slave
MINSUPPLIES 1
SHUTDOWNCMD ""
NOTIFYCMD /usr/sbin/upssched
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
NOTIFYFLAG ONLINE EXEC
NOTIFYFLAG ONBATT EXEC
NOTIFYFLAG LOWBATT IGNORE
NOTIFYFLAG NOCOMM EXEC
NOTIFYFLAG COMMBAD IGNORE
NOTIFYFLAG COMMOK IGNORE
NOTIFYFLAG SHUTDOWN IGNORE
NOTIFYFLAG FSD IGNORE
NOTIFYFLAG NOPARENT SYSLOG
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5


Tu saurais me faire un bout de script qui remplace la ligne commençant par MONITOR par une qui est construite en donnant quelques variables avant la commande de remplacement du style :
Bash:
NOM_UPS_Syno="ups"
IP_Syno_UPS="192.168.2.200"
USER_UPS="monuser"
USER_MDP_UPS="secret"

CHAINE_FINALE="MONITOR $NOM_UPS_Syno@$IP_Syno_UPS 1 $USER_UPS $USER_MDP_UPS slave"

Ainsi, on place en début de script les variables à modifier selon son cas, et le script fait tout seul ce qu'il faut. (J'avais un script qui faisait ce genre de chose sur le syno pour avoir les notifications websosckets pour Vaultwarden via le reverse proxy de DSM, avant que je ne passe par SWAG ;)).

Merci d'avance.
++
 
Dans le fichier upsmon.conf, il faut modifier la deuxième ligne, celle qui commence par MONITOR, pour remplacer :
MONITOR asustor@192.168.2.200 1 admin 1111111 slave
par :
MONITOR ups@192.168.2.200 1 monuser secret slave
pas super a l'aise avec cela, mais je dirais que tu pourrai le faire comme ci :

Code:
sed -i "2s/.*/MONITOR ups@192.168.2.200 1 monuser secret slave/" nom_du_fichier_a_modifier
 
  • J'aime
Réactions: MilesTEG
pas super a l'aise avec cela, mais je dirais que tu pourrai le faire comme ci :

Code:
sed -i "2s/.*/MONITOR ups@192.168.2.200 1 monuser secret slave/" nom_du_fichier_a_modifier
Merci, j’essaye ça dès que j’ai un moment 😉
 
Hop, petit script terminé, je tente le reboot du NAS pour voir si la modification va bien être faite après le démarrage grave au lien dans /etc/init.d
La modification est bien réalisée au reboot.
Un essai en débranchant l'onduleur qui est connecté au Syno est concluant : je reçois un message de l'asustor disant que l'alimentation de l'UPS est coupée, et qu'il y a un countdown avant extinction (Safe Mode mis à 5 minutes).

Bash:
#!/bin/sh
# Script de modification du fichier /etc/ups/upsmon.conf avec backup des fichiers contenus dans /etc/ups
# Faire un :
# chmod +x partage-UPS-avec-Synology.sh

# Pour que les modifications soient effectuées à chaque redémarrage, il faut faire un lien dans /usr/local/etc/init.d/
#
# ln -s /share/docker/_scripts/partage-UPS-avec-Synology.sh /usr/local/etc/init.d/S84UPSpartageAvecSYNOLOGY
#
# init.d colle l'option 'start' à tout ce qui se nomme Sxxxx et 'stop' à tout ce qui se nomme 'Kxxx'

#####################################################
## Variables à modifier
    NOM_UPS_Syno="ups"
    IP_Syno_UPS="192.168.2.200"
    USER_UPS="monuser"
    USER_MDP_UPS="secret"

    DEST_BACKUP=/home/admin_asustor/UPS-CONF-Backup
##
#####################################################

UPS_CONF_PATH=/etc/ups

CHAINE_FINALE="MONITOR $NOM_UPS_Syno@$IP_Syno_UPS 1 $USER_UPS $USER_MDP_UPS slave"

# # DEBUT DEBUG :
# UPS_CONF_PATH=/home/admin_asustor
# printf "\nChaine finale = "
# echo $CHAINE_FINALE
# cp /etc/ups/upsmon.conf /home/admin_asustor
printf "\n--- Début du fichier upsmon.conf non modifié ---\n"
cat $UPS_CONF_PATH/upsmon.conf
printf "\n--- Fin du fichier upsmon.conf non modifié ---\n"
# # FIN DEBUG

# Copie backup des fichiers du dossier UPS_CONF_PATH
mkdir -p $DEST_BACKUP
sudo cp "$UPS_CONF_PATH" $DEST_BACKUP

# Modification du fichier upsmon.conf pour utiliser en slave l'UPS branché en USB sur le Synology
sudo sed -i "2s/.*/${CHAINE_FINALE}/" $UPS_CONF_PATH/upsmon.conf

# DEBUT DEBUG :
printf "\n--- Début du fichier upsmon.conf MODIFIÉ ---\n"
cat $UPS_CONF_PATH/upsmon.conf
printf "\n--- Fin du fichier upsmon.conf MODIFIÉ ---\n"
# FIN DEBUG

# Commandes pour redémarrer le démon upsmon :
upsmon -c stop
upsmon

Je reprendrais tout ça dans un tuto propre et net prochainement :)

Je vais pouvoir déplacer l'Asustor à côté du DS920+, enfin dans le même coin ;)
 
Tuto finalisé (version GitHub pour commencer) :
Désolé ,j'ai raté la notification de jeudi .Du coup ,j'arrive après la bataille .
Après relecture du tuto, si je peux me permettre un conseil ,c'est de toujours préciser quel nas tu manipules ( ça aide si reprise lecture en milieu de procédure ) , et éventuellement avec la mention 'maître' et 'esclave' ,le maître étant connecté à l'usb de l'onduleur .( cette dernière précision étant mentionnée une fois au début , pour bien préciser le vocabulaire )
 
@shaks2022
Merci pour les conseils, demain j'ajouterais les mentions aux NAS que j'utilise, et je préciserais un peu plus souvent l'aspect maître / esclave.
 
@shaks2022 J'ai ajouté quelques références au sujet du maitre/esclave.
Si tu vois d'autres ajouts à faire, n'hésite pas à faire un PR sur github :)