Index: third_party/pexpect/examples/df.py |
diff --git a/third_party/pexpect/examples/df.py b/third_party/pexpect/examples/df.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4faa038912961186fd837c86523471feb4f11603 |
--- /dev/null |
+++ b/third_party/pexpect/examples/df.py |
@@ -0,0 +1,57 @@ |
+#!/usr/bin/env python |
+ |
+'''This collects filesystem capacity info using the 'df' command. Tuples of |
+filesystem name and percentage are stored in a list. A simple report is |
+printed. Filesystems over 95% capacity are highlighted. Note that this does not |
+parse filesystem names after the first space, so names with spaces in them will |
+be truncated. This will produce ambiguous results for automount filesystems on |
+Apple OSX. |
+ |
+PEXPECT LICENSE |
+ |
+ This license is approved by the OSI and FSF as GPL-compatible. |
+ http://opensource.org/licenses/isc-license.txt |
+ |
+ Copyright (c) 2012, Noah Spurrier <noah@noah.org> |
+ PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY |
+ PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE |
+ COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. |
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
+ |
+''' |
+ |
+from __future__ import print_function |
+ |
+from __future__ import absolute_import |
+ |
+import pexpect |
+ |
+child = pexpect.spawn ('df') |
+ |
+# parse 'df' output into a list. |
+pattern = "\n(\S+).*?([0-9]+)%" |
+filesystem_list = [] |
+for dummy in range (0, 1000): |
+ i = child.expect ([pattern, pexpect.EOF]) |
+ if i == 0: |
+ filesystem_list.append (child.match.groups()) |
+ else: |
+ break |
+ |
+# Print report |
+print() |
+for m in filesystem_list: |
+ s = "Filesystem %s is at %s%%" % (m[0], m[1]) |
+ # highlight filesystems over 95% capacity |
+ if int(m[1]) > 95: |
+ s = '! ' + s |
+ else: |
+ s = ' ' + s |
+ print(s) |
+ |