check_os.sh问题(转)

1.安装snmpd后,按文档配置 到2.7步,输出正常。可是界面显示snmp却是失败。
  查找原因,搞了半天,又咨询群里也没有类似的经历,无果。
2.无奈求教群主,他也没有头绪,只是给了提示,看看check_os.sh输出变量有没有问题。看来只能自己研究一下,自己修改check_os.sh脚本,看看哪一步输出有问题了。
3.其中调试总输出有以下内容:
30 (diskIOIndex))

check_os.sh: 77: check_os.sh: arithmetic expression: expecting primary: “-”
我一看信息,大概是与计算有关的数学符号不对,在shell中计算往往令人头痛的问题。原来77,78行是这样进行计算的:
77 #disk_io_reads=((((disk_io_reads_2 - disk_io_reads_1)) 78 #disk_io_writes=(($disk_io_writes_2 - disk_io_writes_1)) 在子shell中进行计算是一个很好的办法,但在这里竟然无法计算,多台机器也是这个结果。 4.最后我修改以bc的方法来计算,结果正确。界面输出也成功,得出相应的结果也输出正常了。除了这两行计算之外,还有其它4行类似的,也一并修改,共有8行,前面是行号,可能不一定对应。 77 disk_io_reads=`echo "disk_io_reads_2 - diskioreads1"bc78diskiowrites=echo"disk_io_reads_1"|bc` 78 disk_io_writes=` echo "disk_io_writes_2 - diskiowrites1"bc83diskioreadstotal=echo"disk_io_writes_1"|bc` 83 disk_io_reads_total=`echo "disk_io_reads_total+diskioreads"bc84diskiowritestotal=echo"disk_io_reads"|bc` 84 disk_io_writes_total=`echo "disk_io_writes_total+diskiowrites"bc104inbytes=echo"disk_io_writes"|bc` 104 in_bytes=`echo "in_bytes_2-inbytes1"bc105outbytes=echo"in_bytes_1"|bc` 105 out_bytes=`echo "out_bytes_2-outbytes1"bc109netinbytestotal=echo"out_bytes_1"|bc` 109 net_in_bytes_total=`echo "net_in_bytes_total+inbytes"bc110netoutbytestotal=echo"in_bytes"|bc` 110 net_out_bytes_total=`echo "net_out_bytes_total+$out_bytes"|bc`