场景描述
使用pssh命令批量对机器执行df -h检查,需要统计每个IP下的磁盘使用率大于80%的路径
执行结果如下
[1] 00:56:15 [SUCCESS] 192.168.1.1
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.8G 16G 11% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.6M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0[2] 00:56:15 [SUCCESS] 192.168.1.2
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.8G 16G 11% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.6M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 146M 869M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0
实现脚本
#!/bin/bash
input_file="your_input_file.txt"
threshold=10
current_ip=""
while IFS= read -r line; do
if [[ $line =~ \[[0-9]+\] ]]; then
current_ip=$(echo "$line" | awk '{print $NF}')
else
usage=$(echo "$line" | awk '{gsub("%","",$5); print $5}')
if [[ $usage -gt $threshold ]]; then
echo "$current_ip - $line"
fi
fi
done < "$input_file"
脚本解释:
将your_input_file.txt
替换为包含你的文本的文件路径。threshold
变量设置为10,表示10%的阈值。
脚本逐行读取文件内容,并使用正则表达式判断是否为IP地址行(以方括号开头)。如果是IP地址行,则将该行最后一个字段保存为current_ip
变量的值。如果不是IP地址行,则提取第五列的使用率,并判断是否大于阈值。如果大于阈值,则打印当前IP地址和对应的行内容。
你可以将脚本保存为.sh
文件,然后在终端中运行bash your_script.sh
来执行脚本。
具体执行
1.将执行的结果放到文本里
这里我保存为zhixing.txt
2.修改脚本count.sh 并保存到linux服务器上
3.执行脚本
sh count.sh