You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

217 lines
5.0 KiB

12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
  1. import socket, platform, os
  2. from datetime import timedelta
  3. from django.core import serializers
  4. from django.shortcuts import render_to_response
  5. from django.http import HttpResponseRedirect, HttpResponse
  6. from django.template import RequestContext
  7. from django.utils.translation import ugettext_lazy as _
  8. from django.utils import simplejson
  9. from pydash.settings import TIME_JS_REFRESH
  10. time_refresh = TIME_JS_REFRESH
  11. def index(request):
  12. """
  13. Index page.
  14. """
  15. if not request.user.is_authenticated():
  16. return HttpResponseRedirect('/login')
  17. else:
  18. return HttpResponseRedirect('/main')
  19. def chunks(get, n):
  20. #for i in xrange(0, len(get), n):
  21. #yield l[i:i+n]
  22. return [get[i:i+n] for i in range(0, len(get), n)]
  23. def get_uptime():
  24. """
  25. Get uptime
  26. """
  27. #if not request.user.is_authenticated():
  28. # return HttpResponseRedirect('/login')
  29. try:
  30. with open('/proc/uptime', 'r') as f:
  31. uptime_seconds = float(f.readline().split()[0])
  32. uptime_time = str(timedelta(seconds = uptime_seconds))
  33. #return uptime_time
  34. data = uptime_time.split('.', 1)[0]
  35. except Exception,err:
  36. data = str(err)
  37. #response = HttpResponse()
  38. #response['Content-Type'] = "text/javascript"
  39. #response.write(data)
  40. return data
  41. #print data
  42. #return render_to_response('main.html', {'getuptime': data, 'time_refresh': time_refresh}, context_instance=RequestContext(request))
  43. def get_hostname():
  44. """
  45. Get the hostname
  46. """
  47. #if not request.user.is_authenticated():
  48. # return HttpResponseRedirect('/login')
  49. try:
  50. data = socket.gethostname()
  51. except Exception,err:
  52. data = str(err)
  53. #response = HttpResponse()
  54. #response['Content-Type'] = "text/javascript"
  55. #response.write(data)
  56. return data
  57. #return render_to_response('main.html', {'gethostname': data}, context_instance=RequestContext(request))
  58. def get_ipaddress():
  59. """
  60. Get the IP Address
  61. """
  62. try:
  63. pipe = os.popen("/sbin/ifconfig |" + "grep -B1 'inet addr' |" + "awk '{ if ( $1 == \"inet\" ) { print $2 } else if ( $2 == \"Link\" ) { printf \"%s:\",$1 } }' |" + "awk -F: '{ print $1, $3 }'")
  64. data = pipe.read().strip().split()
  65. pipe.close()
  66. data = [n for n in data if not n.startswith(('lo', '127'))]
  67. #x=len(data)
  68. #data1 = list(range(x))
  69. #data = dict(zip(data1,data))
  70. #data = data1
  71. #data = chunks(data, 2)
  72. itf = dict(zip(*[iter(data)] * 2))
  73. ips = {'interface': itf, 'itfip': data}
  74. data = ips
  75. except Exception,err:
  76. data = str(err)
  77. return data
  78. def get_traffic(request):
  79. """
  80. Get the traffic for the specified interface
  81. """
  82. try:
  83. pipe = os.popen("cat /proc/net/dev |" + "grep " + request + "| awk {'print $1, $9'}")
  84. data = pipe.read().strip().split(':',1)[-1]
  85. pipe.close()
  86. #data = [n for n in data if not n.startswith(('lo'))]
  87. data = data.split()
  88. traffic_in = int(data[0])
  89. traffic_out = int(data[1])
  90. #percent = (100 - ((freemem * 100) / allmem))
  91. #usage = (allmem - freemem)
  92. all_traffic = {'traffic_in': traffic_in, 'traffic_out': traffic_out}
  93. data = all_traffic
  94. except Exception,err:
  95. data = str(err)
  96. return data
  97. def get_platform():
  98. """
  99. Get the OS name
  100. """
  101. try:
  102. data = " ".join(platform.linux_distribution())
  103. # + " " + platform.system() + " " + platform.release()
  104. except Exception,err:
  105. data = str(err)
  106. return data
  107. def get_disk():
  108. """
  109. Get disk usage
  110. """
  111. try:
  112. #data = commands.getoutput("df -Ph | column -t")
  113. pipe = os.popen("df -Ph | " + "grep -v Filesystem | " + "awk '{print $1, $2, $3, $4, $5, $6}'")
  114. data = pipe.read().strip().split()
  115. pipe.close()
  116. #x=len(data)
  117. #data1 = list(range(x))
  118. #data = dict(zip(data1,data))
  119. #data = data1
  120. #data = chunks(data, 1)
  121. #data = simplejson.dumps(data)
  122. #data = serializers.serialize('json', data)
  123. except Exception,err:
  124. data = str(err)
  125. #eturn HttpResponse(data, mimetype="application/json")
  126. return data
  127. def get_mem():
  128. try:
  129. pipe = os.popen("free -tmo | " + "grep 'Mem' | " + "awk '{print $2,$4}'")
  130. data = pipe.read().strip().split()
  131. pipe.close()
  132. allmem = int(data[0])
  133. freemem = int(data[1])
  134. percent = (100 - ((freemem * 100) / allmem))
  135. usage = (allmem - freemem)
  136. mem_usage = {'usage': usage, 'percent': percent}
  137. data = mem_usage
  138. except Exception,err:
  139. data = str(err)
  140. return data
  141. def get_load():
  142. try:
  143. data = os.getloadavg()[0]
  144. except Exception, err:
  145. data = str(err)
  146. return data
  147. def getall(request):
  148. if not request.user.is_authenticated():
  149. return HttpResponseRedirect('/login')
  150. #getuptime = get_uptime()
  151. #global getuptime
  152. #gethostname = get_hostname(request)
  153. return render_to_response('main.html', {'getuptime': get_uptime(),
  154. 'gethostname': get_hostname(),
  155. 'getplatform': get_platform(),
  156. 'getdisk': get_disk(),
  157. 'getip': get_ipaddress(),
  158. #'gettraffic': get_traffic(),
  159. 'time_refresh': time_refresh
  160. }, context_instance=RequestContext(request))