我是 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
选项探索了选项,但我不想将值存储在文件中并再次读取它。
最佳答案
你可以试试这个:
>>> import subprocess
>>> threshold = 10
>>> child = subprocess.Popen(['df', '-h'], stdout=subprocess.PIPE)
>>> output = child.communicate()[0].strip().split("\n")
>>> for x in output[1:]:
... if int(x.split()[-2][:-1]) >= threshold:
... print x
这将列出磁盘使用率为 10% 或超过 10% 的所有文件系统
关于用于验证 Linux 磁盘空间输出的 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34842735/