From 9241f99095bf2d9187f41c10674eaae0d3aeff65 Mon Sep 17 00:00:00 2001 From: Jeff Lane Date: Wed, 10 Sep 2014 18:23:02 -0400 Subject: fixed a bug that would cause an IndexError when polling the SMART log on a HDD that has never had tests run before --- bin/disk_smart | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/bin/disk_smart b/bin/disk_smart index 3545700..8d61969 100755 --- a/bin/disk_smart +++ b/bin/disk_smart @@ -125,6 +125,7 @@ def get_smart_entries(disk, type='selftest'): # Get lengths from header line = stdout.readline().decode() if not line.startswith('Num'): + entries.append('No entries found in log yet') return entries columns = ['number', 'description', 'status', 'remaining', 'lifetime', 'lba'] @@ -215,13 +216,16 @@ def main(): time.sleep(args.sleep) current_entries = get_smart_entries(disk) - logging.debug('%s %s %s %s' % (current_entries[0]['number'], - current_entries[0]['description'], - current_entries[0]['status'], - current_entries[0]['remaining'])) - if current_entries != previous_entries \ - and current_entries[0]["status"] != 'Self-test routine in progress': - break + if type(current_entries[0]) is str: + logging.debug(current_entries[0]) + else: + logging.debug('%s %s %s %s' % (current_entries[0]['number'], + current_entries[0]['description'], + current_entries[0]['status'], + current_entries[0]['remaining'])) + if current_entries != previous_entries \ + and current_entries[0]["status"] != 'Self-test routine in progress': + break if args.timeout is not None: if args.timeout <= 0: -- cgit v1.2.3 From ed2223842efc68329ba7a3df9ff11a2a020346b5 Mon Sep 17 00:00:00 2001 From: Jeff Lane Date: Thu, 11 Sep 2014 11:25:57 -0400 Subject: changed from type() to isinstance() per comment from zyga --- bin/disk_smart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/disk_smart b/bin/disk_smart index 8d61969..c7f58df 100755 --- a/bin/disk_smart +++ b/bin/disk_smart @@ -216,7 +216,7 @@ def main(): time.sleep(args.sleep) current_entries = get_smart_entries(disk) - if type(current_entries[0]) is str: + if isinstance(current_entries[0], str): logging.debug(current_entries[0]) else: logging.debug('%s %s %s %s' % (current_entries[0]['number'], -- cgit v1.2.3