脚本以找出磁盘sp中的差异

2024-04-16 21:43:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Linux命令,显示磁盘使用情况的输出

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       2.8T  1.1T  1.7T  39% /data/disk2
/dev/sdc1       2.8T  1.1T  1.7T  41% /data/disk3
/dev/sdd1       2.8T  1.1T  1.7T  40% /data/disk4

我需要在脚本(Python或Bash)中继续这一点的帮助,以便让我知道磁盘之间的差异是否超过5%。如果他们是超过5%的不平衡,我会写代码,以电子邮件的结果。任何帮助都将不胜感激。你知道吗


Tags: dev命令datasizeonlinux情况磁盘
3条回答

awk解决方案:

df -h | awk 'NR>1{ a[NR-1]=substr($5,1,length($5)-1) }
        END{ asort(a); print ((a[length(a)]-a[1]) > 5? "Not good!" : "Good!") }'

输出(供您输入):

Good!

这个怎么样:

import re

s = """
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       2.8T  1.1T  1.7T  39% /data/disk2
/dev/sdc1       2.8T  1.1T  1.7T  41% /data/disk3
/dev/sdd1       2.8T  1.1T  1.7T  40% /data/disk4
"""

regex = re.compile(r'\d{1,2}%')

result = [int(a[:-1]) for a in regex.findall(s)]
# [39, 41, 40]

如果你想在最后比较。。。你知道吗

if max(result) - min(result) > 5:
    print("Imbalanced!")
else:
    print("Balanced!")

当然,您可以调用操作系统级函数并获得如下输出:

command_output = subprocess.check_output(['df', '-h']).decode('utf-8')

也可以使用awk

df | awk '\
    BEGIN { \
        max=0; \
        min=2000; \
    } \
    NR>1 { \
      pf = $5; \
      sub( /\%/, "", pf ); \
      pf = pf + 0; \
      if ( pf > max ) max = pf; \
      if ( pf < min ) min = pf; \
    } \
    END { \
      diff = ( max - min ); \
      print diff \
    }'

相关问题 更多 >