Synology-Forum.nl
Tweaks / Addons A.K.A. The Underground => Overige mods => Topic gestart door: mvveelen op 21 januari 2016, 10:55:37
-
Hoi,
ik wil de temperatuur van alle 4 HDD's kunnen uitlezen van m'n DS414 via de CLI
In de webgui zit ik de temperaturen van alle schijven, maar via de CLI lukt het me niet. Voorheen had ik 2 schijven (niet in RAID) en kon ik ze apart uitlezen mbv smartctl -A /dev/hda1 bijvoorbeeld. Maar nu het RAID10 is, kan ik niet hda1 meer gebruiken. Ik zou dan bijv. smartctl -A /dev/sg3 moeten gebruiken denk ik, maar dan klopt het nog niet, want sg0 t/m 4 levert maar 2 waardes op die overeenkomen met de waardes die in de webgui te vinden zijn. Ik denk daarom dat ik de verkeerde HDD's aanspreek.
Hoe lees ik uit welke schijven ik moet selecteren in deze regel? Is daar een eenvoudige manier voor?
-
Tsja, eenvoudig ... ?
Als je ipkg hebt, kun je zo te zien met smartmontools allerlei info opvragen.
http://www.tumfatig.net/20120426/monitor-synology-disk-temperature-from-snmp/
http://ikeke.free.fr/syno/
-
Nee, dat heb ik niet. Ik hoopte het met smartctl te kunnen doen?
Edit:
DiskStation> smartctl --scan
/dev/hda -d ata # /dev/hda, ATA device
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/sdb -d scsi # /dev/sdb, SCSI device
/dev/sdc -d scsi # /dev/sdc, SCSI device
/dev/sdd -d scsi # /dev/sdd, SCSI device
/dev/hda zou de USB aangesloten drive moeten zijn en de andere 4 de interne schijven.
smartctl -A /dev/sda = niet gevonden
smartctl -A /dev/sdb = disk 2 (Seagate)
smartctl -A /dev/sdc = niet gevonden
smartctl -A /dev/sdd = disk 4 (Seagate)
De 2 disks die ik niet kan vinden zijn Wester Digital schijven.
-
Dit soort zaken monitoren kan ook via SNMP... Zelf heb ik dat in gebruik met Domoticz. Zo kan ik van mijn beide Syno's uitlezen wat de disktemperatuur is; het processor- en geheugengebruik en het schijfgebruik. Maar je kan als je wilt nog veel meer zaken op deze wijze aan je systeem ontfutselen...
Zie de Synology MIB guide (http://global.download.synology.com/download/Document/MIBGuide/Synology_DiskStation_MIB_Guide.pdf) of de Domomoticz wiki (http://www.domoticz.com/wiki/NAS_Monitoring) en het Domoticz forum (https://www.domoticz.com/forum/viewtopic.php?f=17&t=1379&sid=ef74378f8b6bc1ee90625fcd15237c49)...
En als je bij Google op 'synology mib' zoekt kom je nog wel meer tegen....
Als teaser een paar plaatjes:
[attach=1]
[attach=2]
Succes!
Wizjos
-
Hoi, dan heb ik jouw reactie op het Domoticz / Tweakers forum wel voorbij zien komen :)
Ik wil alleen niet teveel 'rommelen' aan de Syno om dit voor elkaar te krijgen. Het blijkt dat ik met smartctl alles kan uitlezen, maar de 2 Western Digital RED schijven hadden S.M.A.R.T. uit staan. Bij 1 van de 2 heb ik dat aan kunnen zetten, maar de 2e pakt dat (nog) niet. Ik vermoed dat dit te maken heeft met het feit dat die schijf nu nog gecontroleerd wordt na een plotselinge shutdown. Misschien kan ik het erna wel activeren en kan ik ze alle 4 uitlezen?
Ziet er goed uit wat je daar hebt, maar zoals gezegd wil ik eigenlijk geen andere tools via de CLI hoeven te installeren.
-
zoals gezegd wil ik eigenlijk geen andere tools via de CLI hoeven te installeren.
Prima, suit yourself. Maar wellicht is het voor anderen juist wel weer iets interessants/een uitdaging. Voor mijzelf geldt dat ik Domoticz toch al in gebruik heb (package op Syno) voor de automatisering van mijn huis. Dan is dit er een leuke en waardevolle aanvulling op ;)
Veel commandline heb ik er in ieder geval niet voor hoeven gebruiken. Domoticz dus al helemaal niet. Enkel een aantal shell scripts in /volume1/@appstore/domoticz/scripts hoeven plaatsen (hetgeen bv. met WinSCP een eitje is).
-
Kun je me uitleggen wat ervoor nodig is precies?
Ik draai Domoticz ook al enige tijd op m'n DS414 (Jumbotroll package) en wat moet ik precies voor scripts plaatsen / aanpassen?
Edit:
SNMP heb ik aangezet, maar wat moet ik precies daarna doen? Er wordt in de tutorial gesproken over snmp/snmpd installeren op een RPi, maar ik wil dit dus zonder RPi willen kunnen. Tips?
Trouwens, ook heel interessant dat je PS uitgelezen wordt. Heb je daar ook een tutorial voor hoe dat te doen is? Als ik dan toch bezig ben :)
-
Feitelijk is er niet zo heel veel nodig. Zie vooral de genoemde Domoticz wiki. Daar staat een sectie over Synology in.
't Komt er op neer dat je SNMP moet activeren (Configuratiescherm > Terminal en SNMP).
Hier SNMP service inschakelen en SNMPv1,SNMPv2c service beide aanvinken en in 'gemeenschap' een code zetten (bv test). Deze code wordt later gebruikt in het ophaalcommando voor de SNMP data (dat commando ziet er bv. zo uit: snmpwalk -v 2c -c test -O qv 192.168.131.100 .1.3.6.1.4.1.6574.2.1.1.6.0)
Op de domoticz-wiki pagina zie je ook een uitleesscript staan met de nodige uitvragingen.
Dit script heb ik her en der wat aangepast naar eigen behoefte en geplaatst in de map /volume1/@appstore/domoticz/scripts.
Vervolgens laat ik via een cronjob (taakplanner) eens in de zoveel minuten dit script lopen. De data wordt uitgelezen en Domoticz in geslingerd.
Da's feitelijk alles ;D
-
Doh..... ::)
Ik heb dat aangevinkt en het commando snmpwalk -v 2c -c test -O qv 192.168.0.124 .1.3.6.1.4.1.6574.2.1.1.6.0 geeft bij mij als resultaat: 31
Volgende stap is dus het script. Al ben ik wel ERG benieuwd naar jouw script omdat jij ook de PS er in hebt verwerkt? Kun / wil je dat script delen?
Ga ik nu eerst met het script van de wiki aan de slag. Thanks !
-
Nou vooruit dan... ;D Hier is het script:
#!/bin/bash
# Settings
NASIP="192.168.0.1" # NAS IP Address
PASSWORD="test" # SNMP Password
DOMO_IP="192.168.0.2" # Domoticz IP Address
DOMO_PORT="8084" # Domoticz Port
NAS_IDX="32" # NAS Switch IDX
NAS_HD1_TEMP_IDX="31" # NAS HD1 Temp IDX
NAS_HD2_TEMP_IDX="30" # NAS HD2 Temp IDX
NAS_HD3_TEMP_IDX="43" # NAS HD3 Temp IDX
NAS_HD4_TEMP_IDX="44" # NAS HD4 Temp IDX
NAS_HD5_TEMP_IDX="45" # NAS HD5 Temp IDX
NAS_HD_SPACE_IDX="42" # NAS HD Space IDX in Gb
NAS_HD_SPACE_PERC_IDX="38" # NAS HD Space IDX in %
NAS_CPU_IDX="39" # NAS CPU IDX
NAS_MEM_IDX="40" # NAS MEM IDX
echo $(date) "DiskStation retrieve starting" >> /var/log/cron.log
# Check if NAS in online
PINGTIME=`ping -c 1 -q $NASIP | awk -F"/" '{print $5}' | xargs`
echo $PINGTIME
if expr "$PINGTIME" '>' 0
then
curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$NAS_IDX" | grep "Status" | grep "On" > /dev/null
if [ $? -eq 0 ] ; then
echo "NAS is ON"
# Temperature HD1
HD1temp=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.0`
echo "HD1 tempeature:" $HD1temp
echo "Sending data to device#:" $NAS_HD1_TEMP_IDX
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD1_TEMP_IDX&nvalue=0&svalue=$HD1temp"
echo "Data sent"
# Temperature HD2
HD2temp=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.1`
echo "HD2 tempeature:" $HD2temp
# Send data
echo "Sending data to device#:" $NAS_HD2_TEMP_IDX
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HD2temp"
echo "Data sent"
# Temperature HD3
HD3temp=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.2`
echo "HD3 tempeature:" $HD3temp
# Send data
echo "Sending data to device#:" $NAS_HD3_TEMP_IDX
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD3_TEMP_IDX&nvalue=0&svalue=$HD3temp"
echo "Data sent"
# Temperature HD4
HD4temp=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.3`
echo "HD4 tempeature:" $HD4temp
# Send data
echo "Sending data to device#:" $NAS_HD4_TEMP_IDX
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD4_TEMP_IDX&nvalue=0&svalue=$HD4temp"
echo "Data sent"
# Temperature HD5
HD5temp=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.4`
echo "HD5 tempeature:" $HD5temp
# Send data
echo "Sending data to device#:" $NAS_HD5_TEMP_IDX
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD5_TEMP_IDX&nvalue=0&svalue=$HD5temp"
echo "Data sent"
# Free space volume in Gb
tmpHDUnit=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.4.40` # Change OID to .38 on DSM 5.1
# 40 needs to be set for a DS1513; 38 works on a DS214Play
echo "HDUnit:" $tmpHDUnit
HDUnit=${tmpHDUnit%% *}
HDTotal=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.5.40` # Change OID to .38 on DSM 5.1
# 40 needs to be set for a DS1513; 38 works on a DS214Play
echo "HDTotal:" $HDTotal
HDUsed=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.6.40` # Change OID to .38 on DSM 5.1
# 40 needs to be set for a DS1513; 38 works on a DS214Play
echo "HDUsed:" $HDUsed
HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))
echo $HDFree
# Send data
echo "Sending data to device#:" $NAS_HD_SPACE_IDX
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD_SPACE_IDX&nvalue=0&svalue=$HDFree"
echo "Data sent"
# Free space volume in percent
HDTotal=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.40` # Change OID to .38 on DSM 5.1
# 40 needs to be set for a DS1513; 38 works on a DS214Play
echo "HDTotal:" $HDTotal
HDUsed=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.40` # Change OID to .38 on DSM 5.1
# 40 needs to be set for a DS1513; 38 works on a DS214Play
echo "HDUsed:" $HDUsed
HDFreePerc=$((($HDUsed * 100) / $HDTotal))
echo "HDFreePerc:" $HDFreePerc
# Send data
echo "Sending data to device#:" $NAS_HD_SPACE_PERC_IDX
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDFreePerc"
echo "Data sent"
# CPU utilisation
CpuUser=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP .1.3.6.1.4.1.2021.11.9.0`
echo "CpuUser:" $CpuUser
CpuSystem=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP .1.3.6.1.4.1.2021.11.10.0`
echo "CpuSystem:" $CpuSystem
CpuUse=$(($CpuUser + $CpuSystem))
echo "CpuUse:" $CpuUse
# Send data
echo "Sending data to device#:" $NAS_CPU_IDX
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_CPU_IDX&nvalue=0&svalue=$CpuUse"
echo "Data sent"
# Free Memory Available in %
tmpMemAvailable=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP .1.3.6.1.4.1.2021.4.6.0`
echo "MemAvailable:" $tmpMemAvailable
MemAvailable=${tmpMemAvailable%% *}
MemAvailableinMb=$(($MemAvailable / 1024))
echo "MemAvailableinMb:" $MemAvailableinMb
MemUsepercent=$((($MemAvailableinMb * 100) / 1024))
echo "MemUsepercent:" $MemUsepercent
# Send data
echo "Sending data to device#:" $NAS_MEM_IDX
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent"
echo "Data sent"
fi
else
curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$NAS_IDX" | grep "Status" | grep "Off" > /dev/null
if [ $? -eq 0 ] ; then
echo "NAS is OFF"
exit
else
echo "NAS OFF"
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=switchlight&idx=$NAS_IDX&switchcmd=Off"
fi
fi
echo $(date) "DiskStation retrieve finished" >> /var/log/cron.log
Succes!
-
Ik ga ermee aan de slag.
Voor de temperatuur maak ik virtuele devices aan (temperatuur), wat doe ik voor de andere devices?
Wat is de NAS switch IDX, heb jij er een schakelaar tussen? Of is dit ook een virtuele switch?
Enneh....je PS, heb je dat in een apart script :) ?
-
Het zijn bij mij allemaal virtuele devices:
[attach=1]
De NAS-'switch' is ook virtueel (bij schakelaar Lighting 1, X10). Ik vond het echter niet zo nodig om die check in mijn script te hebben (mijn Syno's staan 24/7 aan), dus dat deel heb ik er uit gesloopt. Het script op de wiki pagina heeft die check nog wel. Mijn beide Syno switches staan dus gewoon (handmatig) altijd op 'aan'...
Ik hoop dat je daar weer verder mee komt...
-
I wish.....heb de virtuele switches aangemaakt (heeft inderdaad geen zin om de status van de NAS op te vragen als het script op de NAS zelf draait, hehehehe).
Alleen als ik het script test nadat ik hem executable heb gemaakt dmv.
sh nas.sh
dan krijg ik:
DiskStation> sh nas.sh
0.190 ms
1
Maar wordt er geen enkele switch geüpdate. Ik heb user/pass toegevoegd en dit ook in het script veranderd zodat de JSON regels deze info meenemen, maar er vindt geen update plaats. Van geen enkele switch helaas.
-
...dan sneuvel je in het stukje
if expr "$PINGTIME" '>' 0
then
curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$NAS_IDX" | grep "Status" | grep "On" > /dev/null
if [ $? -eq 0 ] ; then
Dit stukje checkt of je NAS aan staat...
Als je de check uitcommentarieert (met een # voor aan de regel) (dus# if [ $? -eq 0 ] ; then) en ook de endif (fi) aan het einde, dan zou het wel moeten werken...
-
Ik dacht dat die check klopte omdat hij zichzelf altijd wel kon pingen. Inderdaad. de temperatuur van de HDD's zijn geüpdate.
Alleen de Memory, CPU, HDD space in GB en HDD space in % werken niet. Ik heb de juiste IDX gebruikt, maar misschien heb ik de verkeerde versie virtuele switches gebruikt? Heb je nog een tip voor me om dat stukje ook nog voor elkaar te boksen ?
Ik krijg de volgende output als ik sh nas.sh doe:
OK
Update device
enz.
en dan:
Data sent
HDUnit: No Such Instance currently exists at this OID
HDTotal: No Such Instance currently exists at this OID
HDUsed: No Such Instance currently exists at this OID
nas.sh: line 87: syntax error: (No Such Instance currently exists at this OID - No Such Instance currently exists at this OID) * No / 1024 / 1024 / 1024
Edit: nevermind. Ik moest het OID van 40 naar 38 veranderen :)
Edit 2: alleen blijft de vraag: hoe heb jij die virtuele devices toegevoegd zodat je ook de waarden in GB kunt weergeven enz. ?
-
ad edit2:
Ik heb dus een virtueel device aangemaakt van het type Teller (Counter). Vervolgens bij apparaten de teller een naam gegeven en aangegeven dat 'ie actief is. Dan zie ik 'm als kWh meter onder 'overige apparaten'... Daar klik ik op aanpassen en geef aan dat het een gewone teller is. Dan rekent 'ie niet meer met een bepaalde eenheid, maar laat gewoon het getal zien.
-
Ah, ik had er al 1 op die manier gedaan. Nu de andere ook. Gelukt allemaal ! Blij mee :)
Ehm.....de PS lees je uit met een ander script die je ergens hebt liggen :geek: ? Geen must hoor, maar zou wel geinig zijn. Al staat de PS meestal wel uit. Misschien kan ik ervan leren om bijvoorbeeld ook m'n mediaspeler uit te lezen..... :)
-
De tweede syno lees ik met een kopie van hetzelfde script uit (alleen even de parameters, zoals ip adres en het aantal uit te lezen schijven aanpassen). Onder een andere naam opslaan en vervolgens ook dit script schedulen...
-
Nee, ik bedoel niet je 2e Syno, ik bedoel je Playstation. Die lees je ook uit zo te zien?
-
Gefopt :lol:
Mijn 2e Syno (een 214Play) heet PlayStation, maar is het niet ;D
Mijn excuses voor de vage naam... Heb zelf geen playstation, zou dus niet weten of zoiets ook kan (lijkt me een aardige voor een playstation forum) ;)
-
* proest *
:lol:
Thanks in ieder geval voor deze oplossing(en).
-
Graag gedaan! Veel plezier er mee/van :D
-
Dit soort zaken monitoren kan ook via SNMP... Zelf heb ik dat in gebruik met Domoticz.
Ik ben inmiddels ook bezig met Domoticz alleen krijg ik de Memory useage in % niet werken. Meerder snmp commando`s geprobeerd maar helaas wil deze niet updaten.
Kun je aangeven welke snmpwalk/snmget je hiervoor gebruikt @wizjos ?
-
Krijg je wel een waarde maar niet in % of helemaal geen waarde?
-
welke snmpwalk/snmget je hiervoor gebruikt @wizjos ?
@Martijn85: Ik gebruik hiervoor de volgende commando's
# Free space volume in percent
HDTotal=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.40` # Change OID to .38 on DSM 5.1
echo "HDTotal:" $HDTotal
HDUsed=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.40` # Change OID to .38 on DSM 5.1
echo "HDUsed:" $HDUsed
HDFreePerc=$((($HDUsed * 100) / $HDTotal))
echo "HDFreePerc:" $HDFreePerc
# Send data
echo "Sending data to device#:" $NAS_HD_SPACE_PERC_IDX
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDFreePerc"
echo "Data sent"
# CPU utilisation
CpuUser=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP .1.3.6.1.4.1.2021.11.9.0`
echo "CpuUser:" $CpuUser
CpuSystem=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP .1.3.6.1.4.1.2021.11.10.0`
echo "CpuSystem:" $CpuSystem
CpuUse=$(($CpuUser + $CpuSystem))
echo "CpuUse:" $CpuUse
# Send data
echo "Sending data to device#:" $NAS_CPU_IDX
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_CPU_IDX&nvalue=0&svalue=$CpuUse"
echo "Data sent"
# Free Memory Available in %
tmpMemAvailable=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP .1.3.6.1.4.1.2021.4.6.0`
echo "MemAvailable:" $tmpMemAvailable
MemAvailable=${tmpMemAvailable%% *}
MemAvailableinMb=$(($MemAvailable / 1024))
echo "MemAvailableinMb:" $MemAvailableinMb
MemUsepercent=$((($MemAvailableinMb * 100) / 1024))
echo "MemUsepercent:" $MemUsepercent
# Send data
echo "Sending data to device#:" $NAS_MEM_IDX
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent"
echo "Data sent"
Waarbij ik moet opmerken dat er blijkbaar onderlinge verschillen zijn tussen de diverse modellen in het laatste deel van de parameter (40, 38,36). Ik heb zelf een MIB uitlezer gedownload. Weet zo even niet welke. Zal ik nog eens nakijken. Anyway, die gaf zo'n hoeveelheid data (zinvol, zowel als onzinnig/nietszeggend), dat dat toch een goudmijntje is.... Al doende kwam ik er op deze wijze achter dat dit voor mijn 1513 de juiste waarden zijn. Voor een andere DS gelden wellicht weer andere, maar naastgelegen waarden :|
Ik hoop dat je hiermee verder kunt...
-
Bedankt @wizjos dit is wat ik zocht! Hij geeft nu netjes een waarde i.p.v. een foutmelding.
Voor het browsen van snmp gebruik ik zelf ireasoning MIB browser, het is soms even zoeken naar de juiste waardes maar kan hier aardig mee uit de voeten.
-
Inmiddels heb de code iets aangepast omdat de percentage niet goed werkt weergegeven. Bij mij werkt het onderstaande goed met het geheugen (in %):
# Free Memory Used in %
tmpMemAvailable=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.6.0`
MemAvailable=${tmpMemAvailable%% *}
tmpMemtotal=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.5.0`
Memtotal=${tmpMemtotal%% *}
tmpMemShared=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.13.0`
MemShared=${tmpMemShared%% *}
tmpMemBuffer=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.14.0`
MemBuffer=${tmpMemBuffer%% *}
tmpMemCached=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.15.0`
MemCached=${tmpMemCached%% *}
MemFREE=$(($MemAvailable + $MemShared + $MemBuffer + $MemCached))
MemUsepercent=$(((($Memtotal - $MemFREE) * 100) / $Memtotal))
#// For Available use MemUsepercent=$(((($MemFREE) * 100) / $Memtotal))
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent"
-
Hier loopt het scriptje toch niet helemaal zoals gewenst, ik krijg de volgende foutmelding
getaddrinfo: qv Name or service not known
snmpwalk: Unknown host (qv)
getaddrinfo: qv Name or service not known
snmpwalk: Unknown host (qv)
getaddrinfo: qv Name or service not known
snmpwalk: Unknown host (qv)
getaddrinfo: qv Name or service not known
snmpwalk: Unknown host (qv)
getaddrinfo: qv Name or service not known
snmpwalk: Unknown host (qv)
nas.sh: regel 74: + + + : syntaxfout: operator verwacht (het onjuiste symbool is "+ ")
Kan iemand me hier mee helpen?
-
Denk dat je beter even het gehele script hier gaat plaatsen, die je gebruikt.
-
#!/bin/bash
# Settings
NASIP="192.168.0.1" # NAS IP Address
PASSWORD="WACHTWOORD" # SNMP Password
DOMO_IP="192.168.0.2" # Domoticz IP Address
DOMO_PORT="8080" # Domoticz Port
NAS_IDX="110" # NAS Switch IDX
NAS_HD1_TEMP_IDX="111" # NAS HD1 Temp IDX
NAS_HD2_TEMP_IDX="112" # NAS HD2 Temp IDX
NAS_HD_SPACE_IDX="200" # NAS HD Space IDX in Go
NAS_HD_SPACE_PERC_IDX="198" # NAS HD Space IDX in %
NAS_CPU_IDX="114" # NAS CPU IDX
NAS_MEM_IDX="113" # NAS MEM IDX
# Check if NAS in online
PINGTIME=`ping -c 1 -q $NASIP | awk -F"/" '{print $5}' | xargs`
echo $PINGTIME
if expr "$PINGTIME" '>' 0
then
curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$NAS_IDX" | grep "Status" | grep "On" > /dev/null
if [ $? -eq 0 ] ; then
echo "NAS already ON"
# Temperature HD1
HDtemp1=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.0`
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD1_TEMP_IDX&nvalue=0&svalue=$HDtemp1"
# Temperature HD2
HDtemp2=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.1`
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp2"
# Free space volume in Go
HDUnit=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.4.41` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
HDTotal=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.5.41` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
HDUsed=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.6.41` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD_SPACE_IDX&nvalue=0&svalue=$HDFree"
# Free space volume in percent
HDTotal=`snmpget -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.41` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
HDUsed=`snmpget -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.41` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
HDFreePerc=$((($HDUsed * 100) / $HDTotal))
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDFreePerc"
# CPU utilisation
CpuUser=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.9.0`
CpuSystem=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.10.0`
CpuUse=$(($CpuUser + $CpuSystem))
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_CPU_IDX&nvalue=0&svalue=$CpuUse"
# Free Memory Used in %
tmpMemAvailable=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.6.0`
MemAvailable=${tmpMemAvailable%% *}
tmpMemtotal=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.5.0`
Memtotal=${tmpMemtotal%% *}
tmpMemShared=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.13.0`
MemShared=${tmpMemShared%% *}
tmpMemBuffer=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.14.0`
MemBuffer=${tmpMemBuffer%% *}
tmpMemCached=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.15.0`
MemCached=${tmpMemCached%% *}
MemFREE=$(($MemAvailable + $MemShared + $MemBuffer + $MemCached))
MemUsepercent=$(((($Memtotal - $MemFREE) * 100) / $Memtotal))
#// For Available use MemUsepercent=$(((($MemFREE) * 100) / $Memtotal))
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent"
else
echo "NAS ON"
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=switchlight&idx=$NAS_IDX&switchcmd=On"
# Temperature HD1
HDtemp1=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.0`
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD1_TEMP_IDX&nvalue=0&svalue=$HDtemp1"
# Temperature HD2
HDtemp2=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.1`
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp2"
# Free space volume in Go
HDUnit=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.4.41` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
HDTotal=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.5.41` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
HDUsed=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.6.41` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD_SPACE_IDX&nvalue=0&svalue=$HDFree"
# Free space volume in percent
HDTotal=`snmpget -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.41` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
HDUsed=`snmpget -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.41` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
HDFreePerc=$((($HDUsed * 100) / $HDTotal))
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDFreePerc"
# CPU utilisation
CpuUser=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.9.0`
CpuSystem=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.10.0`
CpuUse=$(($CpuUser + $CpuSystem))
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_CPU_IDX&nvalue=0&svalue=$CpuUse"
# Free Memory Used in %
tmpMemAvailable=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.6.0`
MemAvailable=${tmpMemAvailable%% *}
tmpMemtotal=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.5.0`
Memtotal=${tmpMemtotal%% *}
tmpMemShared=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.13.0`
MemShared=${tmpMemShared%% *}
tmpMemBuffer=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.14.0`
MemBuffer=${tmpMemBuffer%% *}
tmpMemCached=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.15.0`
MemCached=${tmpMemCached%% *}
MemFREE=$(($MemAvailable + $MemShared + $MemBuffer + $MemCached))
MemUsepercent=$(((($Memtotal - $MemFREE) * 100) / $Memtotal))
#// For Available use MemUsepercent=$(((($MemFREE) * 100) / $Memtotal))
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent"
fi
else
curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$NAS_IDX" | grep "Status" | grep "Off" > /dev/null
if [ $? -eq 0 ] ; then
echo "NAS already OFF"
exit
else
echo "NAS OFF"
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=switchlight&idx=$NAS_IDX&switchcmd=Off"
fi
fi
-
Ik snap geloof ik niet hoe ik die virtuele devices aan moet maken? En hoe ik deze dan kan linken aan het script die draait op mijn Synology?
Edit: Inmiddels duidelijk. 1x dummy aanmaken en dan via Setup > Hardware klikken op Create Virtual Sensors
-
Ik heb het script iets aangepast. Nu werkt het op mijn DS216+II met DSM 6.2 8)
Het script met uitbreiding om de status van de HDDs uit telezen en te rapporteren:
Let op: Creëer 2 extra virtuele sensors type Tekst, en verander de IDX variabelen zorgvuldig, nadat je de virtuele sensoren hebt toegevoegd !!!!
HDD Status (1=Normal, 2=Initialized,3=NotInitialized,4=SystempartitionFailed,5=crashed)
Maak voor de zekerheid een backup van de database
#!/bin/bash
# Settings
NASIP="<IP adres SYNOLOGY server" # NAS IP Address WOLFSNAS02
COMMUNITY="<Community String>" # SNMP Password/Community
DOMO_IP="<IP adres DOMOTICZ server" # Domoticz IP Address (rasp2b001)
DOMO_PORT="<Domoticz poortnummer" # Domoticz Port
NAS_IDX="310" # NAS Switch IDX
NAS_HD1_TEMP_IDX="319" # NAS HD1 Temp IDX
NAS_HD2_TEMP_IDX="320" # NAS HD2 Temp IDX
NAS_HD_SPACE_IDX="318" # NAS HD Space IDX in Go
NAS_HD_SPACE_PERC_IDX="317" # NAS HD Space IDX in %
NAS_CPU_IDX="315" # NAS CPU IDX
NAS_MEM_IDX="316" # NAS MEM IDX
NAS_HD1_STATUS_IDX="326" # NAS HD1 Status
NAS_HD2_STATUS_IDX="327" # NAS HD2 Status
# Check if NAS in online
PINGTIME=`ping -c 1 -q $NASIP | awk -F"/" '{print $5}' | xargs`
echo $PINGTIME
if expr "$PINGTIME" '>' 0
then
curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$NAS_IDX" | grep "Status" | grep "On" > /dev/null
if [ $? -eq 0 ] ; then
echo "NAS already ON"
else
echo "NAS ON"
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=switchlight&idx=$NAS_IDX&switchcmd=On"
fi
# Temperature HD1
HDtemp1=`snmpget -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.0`
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD1_TEMP_IDX&nvalue=0&svalue=$HDtemp1"
# Temperature HD2
HDtemp2=`snmpget -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.1`
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp2"
# Status HD1
HDStatus1=`snmpget -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.5.0`
case $HDStatus1 in
1) HDStatus1_txt="The_disk_is_funcioning_normally"
;;
2) HDStatus1_txt="The_disk_has_system_partitions_but_no_data"
;;
3) HDStatus1_txt="Disk_is_not_partitioned"
;;
4) HDStatus1_txt="Partitions_on_the_disk_are_damaged"
;;
5) HDStatus1_txt="The_disk_is_damaged"
;;
*) HDStatus1_txt="Unknown_status"
;;
esac
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD1_STATUS_IDX&nvalue=0&svalue=$HDStatus1_txt"
# Status HD2
HDStatus2=`snmpget -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.5.1`
# Send data
case $HDStatus2 in
1) HDStatus2_txt="The_disk_is_funcioning_normally"
;;
2) HDStatus2_txt="The_disk_has_system_partitions_but_no_data"
;;
3) HDStatus2_txt="Disk_is_not_partitioned"
;;
4) HDStatus2_txt="Partitions_on_the_disk_are_damaged"
;;
5) HDStatus2_txt="The_disk_is_damaged"
;;
*) HDStatus2_txt="Unknown_status"
;;
esac
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD2_STATUS_IDX&nvalue=0&svalue=$HDStatus2_txt"
# Free space volume in Go
HDUnit=`snmpget -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.4.51` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+, .51 on DSM 6.2
HDTotal=`snmpget -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.5.51` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+, .51 on DSM 6.2
HDUsed=`snmpget -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.6.51` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+, .51 on DSM 6.2
HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD_SPACE_IDX&nvalue=0&svalue=$HDFree"
# Free space volume in percent
HDTotal=`snmpget -c $COMMUNITY -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.51` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+, .51 on DSM 6.2
HDUsed=`snmpget -c $COMMUNITY -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.51` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+, .51 on DSM 6.2
HDFreePerc=$((($HDUsed * 100) / $HDTotal))
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDFreePerc"
# CPU utilisation
CpuUser=`snmpget -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.11.9.0`
CpuSystem=`snmpget -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.11.10.0`
CpuUse=$(($CpuUser + $CpuSystem))
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_CPU_IDX&nvalue=0&svalue=$CpuUse"
# Free Memory Used in %
tmpMemAvailable=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.6.0`
MemAvailable=${tmpMemAvailable%% *}
tmpMemtotal=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.5.0`
Memtotal=${tmpMemtotal%% *}
tmpMemShared=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.13.0`
MemShared=${tmpMemShared%% *}
tmpMemBuffer=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.14.0`
MemBuffer=${tmpMemBuffer%% *}
tmpMemCached=`snmpwalk -v 2c -c $COMMUNITY -O qv $NASIP 1.3.6.1.4.1.2021.4.15.0`
MemCached=${tmpMemCached%% *}
MemFREE=$(($MemAvailable + $MemShared + $MemBuffer + $MemCached))
MemUsepercent=$(((($Memtotal - $MemFREE) * 100) / $Memtotal))
#// For Available use MemUsepercent=$(((($MemFREE) * 100) / $Memtotal))
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent"
else
# Ping deed het niet
curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$NAS_IDX" | grep "Status" | grep "Off" > /dev/null
if [ $? -eq 0 ] ; then
echo "NAS already OFF"
exit
else
echo "NAS OFF"
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command¶m=switchlight&idx=$NAS_IDX&switchcmd=Off"
fi
fi
-
Beetje late reactie, maar hopelijk leest iemand het nog :-)
Ben ook een beetje aan rommelen en zodra ik het script uitvoer (via putty) krijg ik o.a. deze log:
De info haalt ie dus op, maar het wegschrijven naar domotics sensor geeft unauthorized.
ahaaa! heb ondertussen al gevonden waarom het fout gaat.
Ik heb username / pwd aan staan in domoticz. Zodra ik het uit zet, dan wordt de data doorgegeven.
iemand een idee hoe dit incl. username - pwd werkend te krijgen?
Nevermind.. is een domoticz settings kwestie
-
Het zijn bij mij allemaal virtuele devices:
(Link naar bijlage)
De NAS-'switch' is ook virtueel (bij schakelaar Lighting 1, X10). Ik vond het echter niet zo nodig om die check in mijn script te hebben (mijn Syno's staan 24/7 aan), dus dat deel heb ik er uit gesloopt. Het script op de wiki pagina heeft die check nog wel. Mijn beide Syno switches staan dus gewoon (handmatig) altijd op 'aan'...
Ik hoop dat je daar weer verder mee komt...
Hoe heb je het device met als type rfx meter toegevoegd??
Ik krijg dat niet voor elkaar.