diff --git a/scripts/show_disk_delta.py b/scripts/show_disk_delta.py
new file mode 100644
index 0000000..634b201
--- /dev/null
+++ b/scripts/show_disk_delta.py
@@ -0,0 +1,72 @@
+import os
+import sys
+import time
+# import pprint
+import threading
+
+
+mapping = [
+    "major number",
+    "minor mumber",
+    "device name",
+    "reads completed successfully",
+    "reads merged",
+    "sectors read",
+    "time spent reading (ms)",
+    "writes complete",
+    "writes merged",
+    "sectors written",
+    "time spent writing (ms)",
+    "I/Os currently in progress",
+    "time spent doing I/Os (ms)",
+    "weighted time spent doing I/Os (ms)"
+]
+
+
+def read_dstats():
+    res = {}
+    for line in open("/proc/diskstats"):
+        stats = dict(zip(mapping, line.split()))
+        name = stats.pop('device name')
+        res[name] = {k: int(v) for k, v in stats.items()}
+    return res
+
+
+def diff_stats(obj1, obj2):
+    return {key: (val - obj2[key]) for key, val in obj1.items()}
+
+
+def run_tool(cmd, suppress_console=True):
+    os.system(" ".join(cmd) + " >/dev/null 2>&1 ")
+
+devices = sys.argv[1].split(',')
+cmd = sys.argv[2:]
+
+th = threading.Thread(None, run_tool, None, (cmd,))
+th.daemon = True
+
+rstats = read_dstats()
+prev_stats = {device: rstats[device] for device in devices}
+
+th.start()
+
+wr_compl = "writes complete"
+
+while True:
+    time.sleep(1)
+
+    rstats = read_dstats()
+    new_stats = {device: rstats[device] for device in devices}
+
+    print "Delta writes complete =",
+    for device in devices:
+        delta = new_stats[device][wr_compl] - prev_stats[device][wr_compl]
+        print device, delta,
+    print
+
+    prev_stats = new_stats
+
+    if not th.is_alive():
+        break
+
+# pprint.pprint(diff_stats(stat2, stat1))
diff --git a/sensors/config.yaml b/sensors/config.yaml
index 61f622b..d9ce8bb 100644
--- a/sensors/config.yaml
+++ b/sensors/config.yaml
@@ -1,4 +1,4 @@
-127.0.0.1:
+192.168.0.104:
     block-io:
         allowed_prefixes: [sda1, rbd1]
     net-io:
@@ -6,18 +6,18 @@
 
 # 192.168.152.39:
 #     block-io:
-#         allowed_prefixes: [sdb]
+#         allowed_prefixes: [sdb, sdc]
 #     net-io:
 #         allowed_prefixes: [eth0]
 
 # 192.168.152.40:
 #     block-io:
-#         allowed_prefixes: [sdb]
+#         allowed_prefixes: [sdb, sdc]
 #     net-io:
 #         allowed_prefixes: [eth0]
 
 # 192.168.152.41:
 #     block-io:
-#         allowed_prefixes: [sdb]
+#         allowed_prefixes: [sdb, sdc]
 #     net-io:
 #         allowed_prefixes: [eth0]
diff --git a/sensors/deploy_sensors.py b/sensors/deploy_sensors.py
index b7e29b3..f3bb2ba 100644
--- a/sensors/deploy_sensors.py
+++ b/sensors/deploy_sensors.py
@@ -45,8 +45,7 @@
         conn.exec_command(cmd)
         sftp.close()
         conn.close()
-    except Exception as exc:
-        print exc
+    except:
         return False
     return True
 
@@ -57,8 +56,9 @@
 
     cmd_templ = "python {0} -d stop"
     conn.exec_command(cmd_templ.format(main_remote_path))
+
+    # some magic
     time.sleep(0.3)
-    # print out.read(), err.read()
 
     conn.exec_command("rm -rf {0}".format(remote_path))
 
