summaryrefslogtreecommitdiffstats
path: root/modules/smart.py
diff options
context:
space:
mode:
authorSeth Vidal <skvidal@fedoraproject.org>2007-09-24 15:44:37 -0400
committerSeth Vidal <skvidal@fedoraproject.org>2007-09-24 15:44:37 -0400
commit0067f7ff6189fdd46f49e45ed2099511eb4de004 (patch)
treec0e64ccb936e314200ce0ec3d2e02acc06b7fce2 /modules/smart.py
parent122714e5589843c5f283ad935b20345576d24ca6 (diff)
parentbcbdab56d02a09ecda8a70acd6e5990073dd6b3e (diff)
Merge branch 'master' of ssh://git.fedoraproject.org/git/hosted/func
* 'master' of ssh://git.fedoraproject.org/git/hosted/func: add a basic AuditLogger class Package the subprocess module so that we can use it on EL4. Basic plugin for checking SMART status on drives. Add basic module for checking smart status of drives. Remove header from ps output
Diffstat (limited to 'modules/smart.py')
-rwxr-xr-xmodules/smart.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/modules/smart.py b/modules/smart.py
new file mode 100755
index 0000000..4ed8335
--- /dev/null
+++ b/modules/smart.py
@@ -0,0 +1,57 @@
+#!/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 sub_process
+
+# 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 = sub_process.Popen("/usr/sbin/smartd %s" % flags,stdout=sub_process.PIPE,shell=True)
+ data = cmd.communicate()[0]
+
+ results = []
+
+ for x in data.split("\n"):
+ results.append(x)
+
+ return (cmd.returncode, results)
+
+methods = SmartModule()
+register_rpc = methods.register_rpc
+
+
+