summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorMichael DeHaan <mdehaan@mdehaan.rdu.redhat.com>2007-09-24 12:01:38 -0400
committerMichael DeHaan <mdehaan@mdehaan.rdu.redhat.com>2007-09-24 12:01:38 -0400
commit84207483cc8a8d00d047ab3c15e2f15cb194884c (patch)
tree876136dcb88f771cbd856430bc6ce8ff1fe40d1f /modules
parent5d42be2f32ad87911e97dd9ccedefb7cab7cbe67 (diff)
downloadthird_party-func-84207483cc8a8d00d047ab3c15e2f15cb194884c.tar.gz
third_party-func-84207483cc8a8d00d047ab3c15e2f15cb194884c.tar.xz
third_party-func-84207483cc8a8d00d047ab3c15e2f15cb194884c.zip
Add basic module for checking smart status of drives.
Diffstat (limited to 'modules')
-rwxr-xr-xmodules/smart.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/modules/smart.py b/modules/smart.py
new file mode 100755
index 0000000..fc4c329
--- /dev/null
+++ b/modules/smart.py
@@ -0,0 +1,58 @@
+#!/usr/bin/python
+
+##
+## Grabs status from SMART to see if your hard drives are ok
+## Returns in the format of (return code, [line1, line2, line3,...])
+##
+## Copyright 2007, Red Hat, Inc
+## Michael DeHaan <mdehaan@redhat.com>
+##
+## This software may be freely redistributed under the terms of the GNU
+## general public license.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+##
+
+# other modules
+import subprocess
+
+# our modules
+from codes import *
+from modules import func_module
+
+# =================================
+
+class SmartModule(func_module.FuncModule):
+ def __init__(self):
+ self.methods = {
+ "info" : self.info,
+ }
+ func_module.FuncModule.__init__(self)
+
+ def info(self,flags="-q onecheck"):
+ """
+ Returns a struct of hardware information. By default, this pulls down
+ all of the devices. If you don't care about them, set with_devices to
+ False.
+ """
+
+ flags.replace(";","") # prevent stupidity
+
+ cmd = subprocess.Popen("/usr/sbin/smartd %s" % flags,stdout=subprocess.PIPE,shell=True)
+ data = cmd.communicate()[0]
+
+ results = []
+
+ for x in data.split("\n"):
+ tokens = x.split()
+ results.append(tokens)
+
+ return (cmd.returncode, results)
+
+methods = SmartModule()
+register_rpc = methods.register_rpc
+
+
+