帮忙看看这个shell脚本
分别要从4台服务器取个硬盘剩余容量和已使用空间,然后把记录保存在本地
现在是这么写的,
echo -e "A地区磁盘使用率为:\c">/root/disk.txt
ssh root@1.1.1.1 `df -h|grep /dev/sdb1|awk "{print \$5}"`>>/root/disk.txt
echo -e "B地区磁盘使用率为:\c">>/root/disk.txt
ssh root@1.1.1.2 `df -h|grep /dev/sdb1|awk "{print \$5}"`>>/root/disk.txt
echo -e "C地区磁盘使用率为:\c">>/root/disk.txt
ssh root@1.1.1.3 `df -h|grep /dev/sdb1|awk "{print \$5}"`>>/root/disk.txt
最后生成结果为:
A地区磁盘使用率为:60%
B地区磁盘使用率为:60%
C地区磁盘使用率为:60%
虽然low了点,但是好歹实现了。现在想改成,多截取一个数据,就是剩余量,并且输出改成:
A 剩余XX% 使用 XX%
B 剩余XX% 使用 XX%
C 剩余XX% 使用 XX%
本人菜鸟一枚,都是百度造轮子的。。。
现在要多取一个参数,截取应该就是awk多加一个就好了,但是要怎么把截取的东西到输出里了。。因为我原先就一个参数,直接加到末尾就行了,都不用考虑。
请大家有空路过的指点指点。
定义一个变量,每次for循环读文件获取ip 然后得到使用率,接着用100减去就行了 枯叶笑 发表于 2021-3-23 22:50
定义一个变量,每次for循环读文件获取ip 然后得到使用率,接着用100减去就行了
我试着用变量
test='ssh root@1.1.1.1 `df -h|grep /dev/sdb1|awk "{print \$5}"`>>/root/disk.txt’
好像这句就只能到grep了,awk就不生效了。。。 本帖最后由 风景暗色调 于 2021-3-24 00:20 编辑
测试过了,缺点:我未做被除数为0的判断,因为想睡觉了....
df -h -B K | grep "/dev/sda1"| awk '{printf("剩余百分比:%.2f%%\t已用百分比:%0.2f%%\n",(int($4)/int($2)*100),(int($3)/int($2)*100))}'
我是没用100来减去$5(df自带的已用百分比)这种方式取得剩余,因为df -h的百分比不够精确,我个人喜欢。
效果就是这样:
剩余百分比:75.67% 已用百分比:24.33%
另外:这玩意用ansible来管理他不香吗,或者用zabbix。 风景暗色调 发表于 2021-3-24 00:15
测试过了,缺点:我未做被除数为0的判断,因为想睡觉了....
df -h -B K | grep "/dev/sda1"| awk '{ ...
辛苦大佬了。单独运行测试了下倒是没问题。
但是试了下跟ssh命令马上连接服务器并运行好像没生效。。引号太多了。
ssh root@1.1.1.1 'df -h -B K | grep "/dev/sda1"| awk '{printf("剩余百分比:%.2f%%\t已用百分比:%0.2f%%\n",(int($4)/int($2)*100),(int($3)/int($2)*100))}'' test='ssh root@1.1.1.1 df -h|grep /dev/sdb1|awk "{print $5}" | awk -F% "{print $1}"'
((avali=100-$test))
echo "已使用${test}% 未使用${avali}%" >> /root/test.txt
注意ssh前面是反引号,最后也是 还有awk后面是用单引号 枯叶笑 发表于 2021-3-24 09:39
test='sshdf -h|grep /dev/sdb1|awk "{print $5}" | awk -F% "{print $1}"'
((avali=100-$test))
echo...
感谢大佬,不过弱弱的问下。
echo "已使用${test}% 未使用${100-$test}%"
这样为什么“未使用”算不出来。。。不能这么写吗? mikaelson 发表于 2021-3-24 10:07
感谢大佬,不过弱弱的问下。
echo "已使用${test}% 未使用${100-$test}%"
${}是引用变量的,算数运算要使用$[] $(())(()) let expr 这些 参考一下下面的:
#!/bin/bash
#机器A
use_A=$(ssh root@192.168.15.95 df -k | grep /dev/sda1 | awk -F " " '{print $5}')
avail_A=`echo $[ 100 - $(echo ${use_A%*%}) ]"%"`
echo "A 剩余${avail_A} 使用${use_A}" >> /root/disk.txt
页:
[1]
2