[英]Script to figure out the difference in disk space
我有一个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%,我将编写代码通过电子邮件发送结果。 任何帮助,将不胜感激。
这个怎么样:
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!")
当然,您可以调用os级函数并获取其输出,如下所示:
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 \
}'
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!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.