我有一个与此处询问的问题类似的问题:查找包含给定文件的文件系统的大小和可用空间,但是该问题假定您已经了解该系统。
我有一个任务:对于数量不确定的机器(包括定期部署的新机器),我/需要一个python脚本,如果任何分区太满,可以向我报告。(是的,它是由icinga2部署的)。
我不要做的是手工制作和个性化脚本参数,以便每台机器将要检查的分区通知它。我运行该脚本,它只是向我报告系统上所有现有的分区。我让系统本身成为自己的权限,而不是从外部定义要检查的分区。这在linux上行之有效,正如上面链接所示,在linux中,我们可以解析/ proc中的文件以获得权威列表。
但是我缺少的是一种从python获取Mac OS X中可靠分区列表的方法。
Mac OS X没有/ proc,因此无法进行解析。我不想调用外部二进制文件,因为我的目标是构建可在Linux和Mac客户端上运行的python脚本。有任何想法吗?
由于需要跨平台(Mac和Linux)选项,因此可以使用在两个平台上都可用的df命令。您可以通过subprocess访问它。
我已经在OS X 10.11和Ubuntu Linux 15上对此进行了测试
import subprocess
process = subprocess.Popen(['df -h | awk \'{print $(NF-1),$NF}\''], stdout=subprocess.PIPE, shell=True)
out, err = process.communicate()
out = out.splitlines()[1:] # grab all the lines except the header line
results = {}
for i in out:
tmp = i.split(' ')
results[tmp[1]] = tmp[0]
for key, value in results.items():
print key + " is " + str(value) +" full"
在Mac上输出
/dev is 100% full
/net is 100% full
/ is 82% full
/home is 100% full
在Linux上输出
/dev is 1% full
/run/lock is 0% full
/run is 1% full
/ is 48% full
这是您可以不用的方法 awk
import subprocess
process = subprocess.Popen(['df', '-h'], stdout=subprocess.PIPE)
out, err = process.communicate()
out = out.splitlines()[1:] # grab all the lines except the header line
for i in out:
tmp = i.split(' ')
tmp2 = []
for x in tmp:
if x != '':
tmp2.append(x)
print tmp2[-1] + " is " + tmp2[-2] + " full"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句