1. Надо сделать так, чтобы ИБП получал каждый раз одно и тоже имя например /dev/usb/ups-1.
Добавляем в UDEV правила:
KERNEL=="hiddev*", ATTRS{manufacturer}=="American Power Conversion", ATTRS{serial}=="AS0000001", OWNER="root", SYMLINK+="usb/ups-1"
KERNEL=="hiddev*", ATTRS{manufacturer}=="American Power Conversion", ATTRS{serial}=="AS0000002", OWNER="root", SYMLINK+="usb/ups-2"
2. Надо для каждого ИБП сделать свой конфигурационный файл, и повесить на разные порты
/etc/apcupsd/ups-1.conf/etc/apcupsd/ups-2.conf
3. Для каждого ИБП делаем свой сервис apcupsd
Написал скрипт, чтобы это всё автоматизировать:
#!/bin/bashBASEDIR=/etc/apcupsdSYSDDIR=/etc/systemd/system/UDEVDIR=/etc/udev/rules.dUPSNAMES=(ups-6 ups-7)SNUMBERS=(3S1331X04067 AS0945299131)PORTS=(3556 3557)if [ ${#UPSNAMES[*]} -eq ${#SNUMBERS[*]} ]thenfor i in ${!UPSNAMES[*]}doUPSNAME=${UPSNAMES[$i]}SNUMBER=${SNUMBERS[$i]}PORT=${PORTS[$i]}APCFILE=$UPSNAME.confSRVFILE=apc$UPSNAME.serviceUDEVFILE=$UDEVDIR/$UPSNAME.rules# echo $i $UPSNAME $SNUMBER $APCFILE $SRVFILE## create udevrule fileecho KERNEL==\"hiddev*\", ATTRS{manufacturer}==\"American Power Conversion\", ATTRS{serial}==\"$SNUMBER\", OWNER=\"root\", SYMLINK+=\"usb/$UPSNAME\" > $UDEVFILE#### creating apcupsd configcd $BASEDIRcp -f ups-template.conf $APCFILEsed -i "s/ups_XX/$UPSNAME/g" $APCFILEsed -i "s/sn_XX/$SNUMBER/g" $APCFILEsed -i "s/355XX/$PORT/g" $APCFILE#### creating systemd service config for each UPS and enable itcp -f apcupsd.service_template $SYSDDIR/$SRVFILEsed -i "s/ups_XX/$UPSNAME/g" $SYSDDIR/$SRVFILEsystemctl enable $SRVFILEsystemctl restart $SRVFILE#### add fw rulesfirewall-cmd --permanent --add-port=$PORT/tcp##doneelseecho "number of upsnames and serial number are not equal"fi