Advertisement
LittleFox94

vm-state.sh

Jan 8th, 2015
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.20 KB | None | 0 0
  1. #!/bin/bash
  2. servers=$(virsh -rc "qemu:///system" list --all | grep -Ev 'Id|--')
  3.  
  4. answer='{"servers":[';
  5. while read line; do
  6.     server=$(echo "$line" | awk '{print $2}')
  7.     state=$(echo "$line" | awk '{print $3}')
  8.  
  9.     if [ "$state" = "running" ]; then
  10.         running="true"
  11.     else
  12.         running="false"
  13.     fi
  14.  
  15.     if [ "$running" = "true" ]; then
  16.         interfaces=$(virsh -rc 'qemu:///system' domiflist "$server" | grep -Ev 'Interface|--')
  17.  
  18.         while read interfaceLine; do
  19.             interface=$(echo "$interfaceLine" | awk '{print $1}')
  20.             network=$(echo "$interfaceLine" | awk '{print $3}')
  21.             rx=$(cat "/sys/class/net/$interface/statistics/rx_bytes")
  22.             tx=$(cat "/sys/class/net/$interface/statistics/tx_bytes")
  23.  
  24.             interfaceString="$interfaceString{\"name\":\"$interface\",\"net\":\"$network\",\"rx\":$rx,\"tx\":$tx},"
  25.         done <<< "$interfaces"
  26.     fi
  27.  
  28.     interfaceString=$(echo "$interfaceString" | sed 's/,$//')
  29.  
  30.     answer="$answer{\"name\":\"$server\",\"running\":$running,\"interfaces\":[$interfaceString]},"
  31.     interfaceString=""
  32. done <<<"$servers"
  33.  
  34. answer=$(echo "$answer" | sed 's/,$//')
  35.  
  36. answer="$answer]}"
  37.  
  38. length=${#answer}
  39.  
  40. echo "Content-Length: $length"
  41. echo "Content-Type: application/json"
  42. echo
  43. echo -ne $answer
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement