【发布时间】:2016-01-17 19:35:49
【问题描述】:
我是python的初学者,我正在编写一个python脚本来验证每个挂载点的利用率是否高于阈值。我可以调用 shell 命令并将输出保存到变量中。但是我无法使用变量拆分字段,检查利用率是否高于阈值并报告故障
/dev/mapper/system-root 20G 18G 1.4G 93% /
udev 3.9G 248K 3.9G 1% /dev
tmpfs 3.9G 68K 3.9G 1% /dev/shm
/dev/sda1 251M 71M 167M 30% /boot
/dev/mapper/system-oracle 128G 43G 79G 36% /opt/app/oracle
/dev/mapper/system-tmp 5.5G 677M 4.5G 13% /tmp
/dev/mapper/system-log 3.0G 140M 2.7G 5% /var/log
/dev/mapper/system-varsog 20G 654M 19G 4% /var/sog
/dev/mapper/system-backup 50G 24G 24G 50% /var/sog/backups
我想将字段 5 和字段 6 存储在关联数组中,并使用阈值验证字段 5 并报告它是否高于阈值。
我使用下面的脚本来存储shell命令输出,现在我需要通过拆分它的字段来处理,但我不能将它存储在数组中,因为它是多维的,所以我应该使用 For Loop 来存储不同的数组。
在 shell、awk 和 perl 中很容易做到,但在 python 中似乎很难。
>>> import sys, os, time, threading, subprocess,datetime
>>> diskinfo_raw = subprocess.Popen("df -h", shell=True,stdout=subprocess.PIPE)
>>> output = diskinfo_raw.communicate()[0]
>>> print output
请帮我提供一个想法或参考。我已经探索了带有loadtxt 选项的选项,但我不想将值存储在文件中并再次读取它。
【问题讨论】:
-
最好不要在命令中添加
-h(人类可读的)参数以获得更容易解析的输出。 -
os.statvfs用于此处的答案之一,stackoverflow.com/a/31856769/5781248 -
python 3.3及以后版本中还有一个跨平台库pythonhosted.org/psutil和
shutil.disk_usage。