用于验证 Linux 磁盘空间输出的 Python 脚本

标签 python arrays linux 2d

我是 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/

相关文章:

python - TypeError: &: 'unicode' 和 'unicode' 不支持的操作数类型

python - 如何在 FacetGrid 中不共享轴

python - RegEx - 查找所有小写单词的模式

java - 在符合 GC 条件的 Java For Each 循环中创建的字符串

java - 如何在Java中将数组长度设置为字符串的大小并从字符串中引入字符

linux - 从 bash 脚本启动 Matlab 时出错...可能很愚蠢

python - Pandas 生成起始月份的日期范围

java - 如何动态增加二维数组的大小

c++ - Linux:作为共享对象 API 的 C++ 抽象类

linux - 自定义 Linux 内核模块来显示年份、日期和时间