Advertisement
eptesicus

upsmon.sh

Feb 16th, 2018
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 7.17 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #This script pulls ups information from both of the
  4. #Cyberpower UPS' connected to 7xESXi01 and 7xESXi02.
  5.  
  6.  
  7. #The time we are going to sleep between readings
  8. #Also used to calculate the current usage on the interface
  9. #30 seconds seems to be ideal, any more frequent and the data
  10. #gets really spikey.  Since we are calculating on total octets
  11. #you will never loose data by setting this to a larger value.
  12. sleeptime=5
  13.  
  14. get_ups_info_7xesxi01 () {
  15.     #-- Cyber Power Panel - 7xESXi01 --
  16.  
  17.     #Pull data from the Cyber Power Panel.  Replace with your own IP.
  18.     cpp_7xesxi01_json_data=$(curl http://10.0.1.61:3052/agent/ppbe.js/init_status.js)
  19.  
  20.     #input voltage
  21. #    cpp_7xesxi01_involts=$(echo $cpp_7xesxi01_json_data | grep -oP '(?<="voltage":")[^."]*' | head -1)
  22.  
  23.     #battery voltage
  24.     cpp_7xesxi01_battvolts=$(echo $cpp_7xesxi01_json_data | grep -oP '(?<="voltage":")[^."]*' | tail -1)
  25.  
  26.     #Load(Watts)
  27.     cpp_7xesxi01_loadwatt=$(echo $cpp_7xesxi01_json_data | grep -oP '(?<="watt":)[^,]*' | head -1)
  28.  
  29.     #Capacity %
  30.     cpp_7xesxi01_capacity=$(echo $cpp_7xesxi01_json_data | grep -oP '(?<="capacity":)[^,]*' | head -1)
  31.  
  32.     #Runtime
  33.     runtimeHour=$(echo $cpp_7xesxi01_json_data | grep -oP '(?<="runtimeHour":)[^,]*' | head -1)
  34.     runtimeMinute=$(echo $cpp_7xesxi01_json_data | grep -oP '(?<="runtimeMinute":)[^,]*' | head -1)
  35.     cpp_7xesxi01_runtime=$(($runtimeHour*60*60+$runtimeMinute*60))
  36.  
  37.     #Load %
  38.     cpp_7xesxi01_loadpercent=$(echo $cpp_7xesxi01_json_data | grep -oP '(?<="load":)[^,]*' | head -1)
  39.  
  40.     #Battery Status
  41.     cpp_7xesxi01_status=$(echo $cpp_7xesxi01_json_data | grep -oP '(?<="battery":{"state":")[a-zA-Z, ]*' | head -1)
  42.  
  43.     cpp_7xesxi01_status2="\"$cpp_7xesxi01_status\""
  44. }
  45.  
  46. get_ups_info_7xesxi02() {
  47.     #-- Cyber Power Panel - 7xesxi02 --
  48.  
  49.     #Pull data from the Cyber Power Panel.  Replace with your own IP.
  50.     cpp_7xesxi02_json_data=$(curl http://10.0.1.62:3052/agent/ppbe.js/init_status.js)
  51.  
  52.     #input voltage
  53. #    cpp_7xesxi02_involts=$(echo $cpp_7xesxi02_json_data | grep -oP '(?<="voltage":")[^."]*' | head -1)
  54.  
  55.     #battery voltage
  56.     cpp_7xesxi02_battvolts=$(echo $cpp_7xesxi02_json_data | grep -oP '(?<="voltage":")[^."]*' | tail -1)
  57.  
  58.     #Load(Watts)
  59.     cpp_7xesxi02_loadwatt=$(echo $cpp_7xesxi02_json_data | grep -oP '(?<="watt":)[^,]*' | head -1)
  60.  
  61.     #Capacity %
  62.     cpp_7xesxi02_capacity=$(echo $cpp_7xesxi02_json_data | grep -oP '(?<="capacity":)[^,]*' | head -1)
  63.  
  64.     #Runtime
  65.     runtimeHour=$(echo $cpp_7xesxi02_json_data | grep -oP '(?<="runtimeHour":)[^,]*' | head -1)
  66.     runtimeMinute=$(echo $cpp_7xesxi02_json_data | grep -oP '(?<="runtimeMinute":)[^,]*' | head -1)
  67.     cpp_7xesxi02_runtime=$(($runtimeHour*60*60+$runtimeMinute*60))
  68.  
  69.     #Load %
  70.     cpp_7xesxi02_loadpercent=$(echo $cpp_7xesxi02_json_data | grep -oP '(?<="load":)[^,]*' | head -1)
  71.  
  72.     #Battery Status
  73.     cpp_7xesxi02_status=$(echo $cpp_7xesxi02_json_data | grep -oP '(?<="battery":{"state":")[a-zA-Z, ]*' | head -1)
  74.  
  75.     cpp_7xesxi02_status2="\"$cpp_7xesxi02_status\""
  76. }
  77.  
  78. print_data_7xesxi01 () {
  79.     echo "7xESXi01 UPS Battery Voltage: $cpp_7xesxi01_battvolts"
  80.     echo "7xESXi01 UPS Battery Charge: $cpp_7xesxi01_capacity"
  81.     echo "7xESXi01 UPS Load: $cpp_7xesxi01_loadpercent"
  82.     echo "7xESXi01 UPS Load(Watts): $cpp_7xesxi01_loadwatt"
  83. #    echo "7xESXi01 UPS Input Voltage: $cpp_7xesxi01_involts"
  84.     echo "7xESXi01 UPS Runtime: $cpp_7xesxi01_runtime"
  85.     echo "7xESXi01 UPS Battery Status: $cpp_7xesxi01_status2"
  86. }
  87.  
  88. print_data_7xesxi02() {
  89.     echo "7xESXi02 UPS Battery Voltage: $cpp_7xesxi02_battvolts"
  90.     echo "7xESXi02 UPS Battery Charge: $cpp_7xesxi02_capacity"
  91.     echo "7xESXi02 UPS Load: $cpp_7xesxi02_loadpercent"
  92.     echo "7xESXi02 UPS Load(Watts): $cpp_7xesxi02_loadwatt"
  93. #    echo "7xESXi02 UPS Input Voltage: $cpp_7xesxi02_involts"
  94.     echo "7xESXi02 UPS Runtime: $cpp_7xesxi02_runtime"
  95.     echo "7xESXi02 UPS Battery Status: $cpp_7xesxi02_status2"
  96. }
  97.  
  98. write_data_7xesxi01 () {
  99.     #Write the data to the database
  100.     curl -i -XPOST 'http://localhost:8086/write?db=upsmon' --data-binary "ups_data,host=7xesxi01,sensor=battvoltage denhost1.value=$cpp_7xesxi01_battvolts"
  101.     curl -i -XPOST 'http://localhost:8086/write?db=upsmon' --data-binary "ups_data,host=7xesxi01,sensor=battcharge denhost1.value=$cpp_7xesxi01_capacity"
  102.     curl -i -XPOST 'http://localhost:8086/write?db=upsmon' --data-binary "ups_data,host=7xesxi01,sensor=battload denhost1.value=$cpp_7xesxi01_loadpercent"
  103.     curl -i -XPOST 'http://localhost:8086/write?db=upsmon' --data-binary "ups_data,host=7xesxi01,sensor=battloadwatt denhost1.value=$cpp_7xesxi01_loadwatt"
  104.  #   curl -i -XPOST 'http://localhost:8086/write?db=upsmon' --data-binary "ups_data,host=7xesxi01,sensor=inputvoltage denhost1.value=$cpp_7xesxi01_involts"
  105.     curl -i -XPOST 'http://localhost:8086/write?db=upsmon' --data-binary "ups_data,host=7xesxi01,sensor=runtime denhost1.value=$cpp_7xesxi01_runtime"
  106.     curl -i -XPOST 'http://localhost:8086/write?db=upsmon' --data-binary "ups_data,host=7xesxi01,sensor=status value=$cpp_7xesxi01_status2"
  107. }
  108.  
  109. write_data_7xesxi02() {
  110.         #Finally we can write it to the database
  111.     curl -i -XPOST 'http://localhost:8086/write?db=upsmon' --data-binary "ups_data,host=7xesxi02,sensor=battvoltage denhost1.value=$cpp_7xesxi02_battvolts"
  112.     curl -i -XPOST 'http://localhost:8086/write?db=upsmon' --data-binary "ups_data,host=7xesxi02,sensor=battcharge denhost1.value=$cpp_7xesxi02_capacity"
  113.     curl -i -XPOST 'http://localhost:8086/write?db=upsmon' --data-binary "ups_data,host=7xesxi02,sensor=battload denhost1.value=$cpp_7xesxi02_loadpercent"
  114.     curl -i -XPOST 'http://localhost:8086/write?db=upsmon' --data-binary "ups_data,host=7xesxi02,sensor=battloadwatt denhost1.value=$cpp_7xesxi02_loadwatt"
  115.  #   curl -i -XPOST 'http://localhost:8086/write?db=upsmon' --data-binary "ups_data,host=7xesxi02,sensor=inputvoltage denhost1.value=$cpp_7xesxi02_involts"
  116.     curl -i -XPOST 'http://localhost:8086/write?db=upsmon' --data-binary "ups_data,host=7xesxi02,sensor=runtime denhost1.value=$cpp_7xesxi02_runtime"
  117.     curl -i -XPOST 'http://localhost:8086/write?db=upsmon' --data-binary "ups_data,host=7xesxi02,sensor=status value=$cpp_7xesxi02_status2"
  118. }
  119.  
  120. #Prepare to start the loop and warn the user
  121. echo "Press [CTRL+C] to stop..."
  122. while :
  123. do
  124.  
  125.     get_ups_info_7xesxi01
  126.     get_ups_info_7xesxi02
  127.  
  128.     if [[ $cpp_7xesxi01_capacity -le 0 || $cpp_7xesxi01_battvolts -le 0 || $cpp_7xesxi01_loadpercent -le 0 || $cpp_7xesxi01_runtime -le 0 || $cpp_7xesxi01_status2 -le 0 ]];
  129.         then
  130.             echo "Skip this datapoint - something went wrong with the read"
  131.  
  132.         else
  133.             #Output console data for future reference
  134.             print_data_7xesxi01
  135.             write_data_7xesxi01
  136.     fi
  137.  
  138.     if [[ $cpp_7xesxi02_capacity -le 0 || $cpp_7xesxi02_battvolts -le 0 || $cpp_7xesxi02_loadpercent -le 0 || $cpp_7xesxi02_runtime -le 0 || $cpp_7xesxi02_status2 -le 0 ]];
  139.         then
  140.             echo "Skip this datapoint - something went wrong with the read"
  141.         else
  142.             #Output console data for future reference
  143.             print_data_7xesxi02
  144.             write_data_7xesxi02
  145.     fi
  146.  
  147.     #Sleep between readings
  148.     sleep "$sleeptime"
  149.  
  150. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement