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"∣bc‘78diskiowrites=‘echo"disk_io_writes_2 - diskiowrites1"∣bc‘83diskioreadstotal=‘echo"disk_io_reads_total+diskioreads"∣bc‘84diskiowritestotal=‘echo"disk_io_writes_total+diskiowrites"∣bc‘104inbytes=‘echo"in_bytes_2-inbytes1"∣bc‘105outbytes=‘echo"out_bytes_2-outbytes1"∣bc‘109netinbytestotal=‘echo"net_in_bytes_total+inbytes"∣bc‘110netoutbytestotal=‘echo"net_out_bytes_total+$out_bytes"|bc`