忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 4370 | 回复: 4

[数值计算] 磁盘利用百分率的计算 [复制链接]

论坛徽章:
17
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:20程序设计版块每日发帖之星
日期:2015-12-31 06:20:022015亚冠之塔什干棉农
日期:2015-08-17 19:49:49程序设计版块每日发帖之星
日期:2015-06-04 22:20:00程序设计版块每日发帖之星
日期:2015-06-04 16:12:382015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年迎新春徽章
日期:2015-03-04 09:57:09
发表于 2017-10-03 18:43 |显示全部楼层
本帖最后由 bikkuri 于 2017-10-03 18:46 编辑

大家好!
我有一个问题向大家请教。

通过查询设备状态信息可以得到如下的内容:

......
BOF last modified                 : N/A
Config file version               : WED SEP 28 08:32:42 2016 UTC
Config file last modified         : N/A
Config file last saved            : 2016/10/03 01:44:26
M/S clocking ref state            : primary

Flash - cf1:
    Administrative State          : up
    Operational state             : not equipped

Flash - cf2:
    Administrative State          : up
    Operational state             : up
    Serial number                 : 20120515    00000D16
    Firmware revision             : 20120410
    Model number                  : CF CARD 2GB
    Size                          : 1,911 MB
    Free space                    : 1,911 MB

Flash - cf3:
    Administrative State          : up
    Operational state             : up
    Serial number                 : 406VTK69Se606QC00068
    Firmware revision             : V2.23
    Model number                  : SILICONSYSTEMS INC 2GB
    Size                          : 2,001 MB
    Free space                    : 1,052 MB

Hardware Data
    Platform type                 : 7750
    Part number                   : 3HE04164AAAE02
    CLEI code                     : IPUCAUXFTB
    Serial number                 : NS1231F1762
......

现在希望通过这个设备状态信息得到设备中各Flash的使用率。
即找到以Flash开头的行,对每一块Flash,计算使用率:
Usage=(Size-Free space)/Size
Size和Free space的单位可能是MB也可能是KB,因此要折算成相同单位以后才能算使用率。
例如以上文本,希望得到的结果是:
cf2:0%;cf3:47%
因为:
(1911MB-1911MB)/1911MB=0%;
(2001MB-1052MB)/2001MB=47%

又如以下文本:
......
Flash - cf1:
    Administrative State          : up
    Operational state             : up
    Serial number                 : serial-1
    Firmware revision             : v1.0
    Model number                  : Flash 1
    Size                          : 110,984 KB
    Free space                    : 13,048 KB

Flash - uf1:
    Administrative State          : up
    Operational state             : not equipped
......
------------------------------------------------
(110984-13048)/110984=0.8824335039284942
------------------------------------------------
希望得到结果是:
cf1:88%

又如以下文本:
......
Flash - cf3:
    Administrative State          : up
    Operational state             : up
    Serial number                 :  STI1MN3610037093014
    Firmware revision             : 01/17/07
    Model number                  : STI Flash 8.0.0
    Size                          : 1,950 MB
    Free space                    : 796,032 KB
......
------------------------------------------------
(1950*1024-796032)/(1950*1024)=(1996800-796032)/1996800=0.6013461538461538
------------------------------------------------
希望得到结果是:
cf3:60%

谢谢大家的帮助。

论坛徽章:
17
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:20程序设计版块每日发帖之星
日期:2015-12-31 06:20:022015亚冠之塔什干棉农
日期:2015-08-17 19:49:49程序设计版块每日发帖之星
日期:2015-06-04 22:20:00程序设计版块每日发帖之星
日期:2015-06-04 16:12:382015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年迎新春徽章
日期:2015-03-04 09:57:09
发表于 2017-10-04 06:41 |显示全部楼层
本帖最后由 bikkuri 于 2017-10-04 09:32 编辑

[box@iZ94mso98zxZ:~]$ for file in f1 f2 f3; do cat $file|awk -F '[: ]+' '/Flash - /{sub(/Flash - /,"");a=$1}/Size/{sub(/,/,"");b=($4=="MB")?$3*1024:$3}/Free space/{sub(/,/,"");c=($5=="MB")?$4*1024:$4;printf("%s:%2i% ",a,(b-c)*100/b)}'; echo; done
cf2: 0% cf3:47%
cf1:88%
cf3:60%
[box@iZ94mso98zxZ:~]$

论坛徽章:
121
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07巳蛇
日期:2014-05-09 16:43:18巨蟹座
日期:2014-10-23 17:48:38子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59
发表于 2017-10-04 06:59 |显示全部楼层
回复 1# bikkuri

Flash - cf3:
    Administrative State          : up
    Operational state             : up
    Serial number                 :  STI1MN3610037093014
    Firmware revision             : 01/17/07
    Model number                  : STI Flash 8.0.0
    Size                          : 1,950 MB
    Free space                    : 796,032 KB


(1950*1024-796032)/(1950*1024)=(1996800-796032)/1996800=0.6013461538461538


$ awk -F'[ :-]+' 'BEGIN{t=split("KB MB GM",u);for(n=1;n<=t;++n)a[u[n]]=(2**10)**n}function sz(n,m){gsub(",","",n);return(n*(a[m]?a[m]:1))}!NF{next}$1!=""{f=/^Flash/?$2:""}f&&$2=="Size"{s=sz($3,$4)}f&&/Free space/{k=sz($4,$5);d=d";"f":"int((s-k)/s*100)"%"}END{if(d){sub("^;","",d);print d}}' F1
cf2:0%;cf3:47%

$ awk -F'[ :-]+' 'BEGIN{t=split("KB MB GM",u);for(n=1;n<=t;++n)a[u[n]]=(2**10)**n}function sz(n,m){gsub(",","",n);return(n*(a[m]?a[m]:1))}!NF{next}$1!=""{f=/^Flash/?$2:""}f&&$2=="Size"{s=sz($3,$4)}f&&/Free space/{k=sz($4,$5);d=d";"f":"int((s-k)/s*100)"%"}END{if(d){sub("^;","",d);print d}}' F2
cf1:88%

$ awk -F'[ :-]+' 'BEGIN{t=split("KB MB GM",u);for(n=1;n<=t;++n)a[u[n]]=(2**10)**n}function sz(n,m){gsub(",","",n);return(n*(a[m]?a[m]:1))}!NF{next}$1!=""{f=/^Flash/?$2:""}f&&$2=="Size"{s=sz($3,$4)}f&&/Free space/{k=sz($4,$5);d=d";"f":"int((s-k)/s*100)"%"}END{if(d){sub("^;","",d);print d}}' F3
cf3:60%

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-10-04 09:58 |显示全部楼层
本帖最后由 sunzhiguolu 于 2017-10-04 10:19 编辑
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. $/ = '';
  5. while(<DATA>){
  6.         next if(!/\AFlash\s+-\s+(\w+)/);
  7.         my $id = $1;
  8.         my ($s, $fs) = (split(/\n/))[-2, -1];
  9.         next if($s !~ /Size/ or $fs !~ /Free\s+space/);
  10.         ($s, $fs) = map {
  11.                 my ($n) = s/,//gr =~ /(\d+)/;
  12.                 (/mb\b/i ? 1024 : 1) * $n;
  13.         } ($s, $fs);
  14.         printf("$id:%d%%\n", ($s - $fs) * 100 / $s);
  15. }

  16. __DATA__
  17. BOF last modified                 : N/A
  18. Config file version               : WED SEP 28 08:32:42 2016 UTC
  19. Config file last modified         : N/A
  20. Config file last saved            : 2016/10/03 01:44:26
  21. M/S clocking ref state            : primary

  22. Flash - cf1:
  23.     Administrative State          : up
  24.     Operational state             : not equipped

  25. Flash - cf2:
  26.     Administrative State          : up
  27.     Operational state             : up
  28.     Serial number                 : 20120515    00000D16
  29.     Firmware revision             : 20120410
  30.     Model number                  : CF CARD 2GB
  31.     Size                          : 1,911 MB
  32.     Free space                    : 1,911 MB

  33. Flash - cf3:
  34.     Administrative State          : up
  35.     Operational state             : up
  36.     Serial number                 : 406VTK69Se606QC00068
  37.     Firmware revision             : V2.23
  38.     Model number                  : SILICONSYSTEMS INC 2GB
  39.     Size                          : 2,001 MB
  40.     Free space                    : 1,052 MB

  41. Hardware Data
  42.     Platform type                 : 7750
  43.     Part number                   : 3HE04164AAAE02
  44.     CLEI code                     : IPUCAUXFTB
  45.     Serial number                 : NS1231F1762

  46. Flash - cfn:
  47.     Administrative State          : up
  48.     Operational state             : up
  49.     Serial number                 :  STI1MN3610037093014
  50.     Firmware revision             : 01/17/07
  51.     Model number                  : STI Flash 8.0.0
  52.     Size                          : 1,950 MB
  53.     Free space                    : 796,032 KB
复制代码

论坛徽章:
17
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:20程序设计版块每日发帖之星
日期:2015-12-31 06:20:022015亚冠之塔什干棉农
日期:2015-08-17 19:49:49程序设计版块每日发帖之星
日期:2015-06-04 22:20:00程序设计版块每日发帖之星
日期:2015-06-04 16:12:382015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年迎新春徽章
日期:2015-03-04 09:57:09
发表于 2017-10-04 10:00 |显示全部楼层
谢谢您的帮助。学习了!

回复 3# jason680


您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP