snmoney 发表于 2013-2-21 15:07:08

小改wvl自动发送状态报告附带硬盘详细SMART信息

背景:nas我放家里7*24 因为长时间不在家无人值守,我希望nas可以给我汇报状态尤其是磁盘的健康状况
wvl可以在webadmin的维护菜单里设置定期发送nas的工作状态,但发现信息量太少太简单了,除去主机常规信息,关运行状态只有寥寥几句,例如:


RAID Array 1 Usage Rate : 40588120 kbytes / 1938180224 kbytes (Usage Rate 2%)


DISK10
DISK20

于是我决定自己来小改一下
找到 /usr/local/bin/sendmail.sh
用vi 或 winSCP或干脆下载弄到PC上用文本编辑工具打开
在855行处添加两行

smartctl -d sat -i -H -A /dev/sda >> $BODY_FILE
smartctl -d sat -i -H -A /dev/sdb >> $BODY_FILE

这两行的意思是把硬盘1(/dev/sda)和硬盘2(/dev/sdb) 进行健康检测、把规格参数以及目前的SMART详细状态添加到邮件末尾。只用了单硬盘的XD可以只添加第一行。

这两行命令位于发送状态报告邮件的函数 FuncRegularReport() 里,插入到放在执行 SendMail之前,如图



*还有一行 #开头的是注释,没用的
然后保存,如果是把sendmail.sh拷贝出来编辑的话,存回去之后记得要把文件的权限恢复为755
也就是在ssh里运行一次
chmod 755 /usr/local/bin/sendmail.sh
我们可以手动执行发送状态报告邮件测试一下效果(需要webadmin已经配置好了发送邮件报告并选中了发送硬盘状态)


之后收到的状态邮件末尾会附带两个硬盘的响应信息类似下面的例子
我们关注其中的几个信息即可,已蓝色加粗和添加了绿色的说明

smartctl version 5.37 Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Device Model:   WDC WD2003FYYS-02W0B0 硬盘型号
Serial Number:    WD-WMAY00069431 序列号
Firmware Version: 01.01D02
User Capacity:    2,000,398,934,016 bytes
Device is:      Not in smartctl database
ATA Version is:   8
ATA Standard is:Exact ATA specification draft version not indicated
Local Time is:    Thu Feb 21 14:36:54 2013 CST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED健康状况PASSED就是好的

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG   VALUE WORST THRESH TYPE      UPDATEDWHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate   0x002f   200   200   051    Pre-failAlways       -       1
3 Spin_Up_Time            0x0027   253   253   021    Pre-failAlways       -       6241
4 Start_Stop_Count      0x0032   100   100   000    Old_age   Always       -       11
5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-failAlways       -       0 已检测到的坏轨数量,只要不是0就得注意了
7 Seek_Error_Rate         0x002e   100   253   000    Old_age   Always       -       0
9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       77 通电/运作了多少个小时,新买的硬盘可以留意一下这里
10 Spin_Retry_Count      0x0032   100   253   000    Old_age   Always       -       0
11 Calibration_Retry_Count 0x0032   100   253   000    Old_age   Always       -       0
12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       11
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       9
193 Load_Cycle_Count      0x0032   200   200   000    Old_age   Always       -       1
194 Temperature_Celsius   0x0022   102   101   000    Old_age   Always       -       50硬盘温度
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector0x0032   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   253   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   100   253   000    Old_age   Offline      -       0


其他SMART属性的含义可以自行搜索一下,不同类型的硬盘会有些差别。
硬盘有价数据无价,祝大家的nas身体健康长命百岁

snmoney 发表于 2013-2-21 15:10:09

emm,忘记了说手动执行发送硬盘报告邮件的命令是在ssh下执行
# /etc/cron/cron.d/mailnotice.sh
如果你配置的邮箱信息没有错的话,立刻就会收到
QQ\163\126\等国内免费邮箱的smtp都不支持,好奇怪
用gmail的同学可以参考上面截图的配置

momo 发表于 2013-2-21 15:32:31

看上去有点复杂,不过自己动手还是很不错的。

宿醉冇醒 发表于 2013-2-21 16:30:54

{:7_191:}非常好,谢谢了!

dea 发表于 2013-2-21 16:37:16

手动发邮件,内容还是和以前一样, 于是执行了下smartctl -d sat -i -H -A /dev/sda, 显示# smartctl -d sat -i -H -A /dev/sda
smartctl: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

snmoney 发表于 2013-2-21 17:32:02

dea 发表于 2013-2-21 16:37 static/image/common/back.gif
手动发邮件,内容还是和以前一样, 于是执行了下smartctl -d sat -i -H -A /dev/sda, 显示 ...

你的是什么型号什么版本的固件?

超导体 发表于 2013-2-21 17:59:48

谢楼主,试试去

snmoney 发表于 2013-2-21 18:33:41

dea 发表于 2013-2-21 16:37 static/image/common/back.gif
手动发邮件,内容还是和以前一样, 于是执行了下smartctl -d sat -i -H -A /dev/sda, 显示 ...

你是装MOD的?被精简了?
我装的是官方的 1.64

jiff3 发表于 2013-2-21 18:50:08

不错,试试去。

zptpower1 发表于 2013-2-22 10:45:42

好使~正常收到右键了~

zengmoxi 发表于 2013-2-25 12:00:14

很实用,我也准备上wvl了,就是硬盘格式不能ntfs,不方便分享

文雅的堕落 发表于 2013-2-26 09:24:30

相当不错

文雅的堕落 发表于 2013-2-26 09:32:05

其他版本的固件不能插入到855行。
插入地应该是
SubFuncRegularReportDiskErr
        echo "" >> $BODY_FILE
之后。

rowa58 发表于 2013-2-26 10:23:16

学习,学习

dea 发表于 2013-2-26 13:17:52

本帖最后由 dea 于 2013-2-26 13:30 编辑

我的也是WVL 官方1.64, 两块硬盘用的raid0root@NAS:~# /etc/cron/cron.d/mailnotice.sh
Can't specify using language.
use english messages
smartctl: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
smartctl: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

snmoney 发表于 2013-2-26 14:07:47

dea 发表于 2013-2-26 13:17 static/image/common/back.gif
我的也是WVL 官方1.64, 两块硬盘用的raid0

直接运行
smartctl -d sat -i -H -A /dev/sda
也这样报错吗?缺少这个东西?

试试
ipkg install libstdc++

你的nas改过其他东西吗?有没有装 opt, tr 之类的?

dea 发表于 2013-2-26 14:48:55

直接运行也报错:root@NAS:~# smartctl -d sat -i -H -A /dev/sda
smartctl: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
root@NAS:~# ipkg install libstdc++
Package libstdc++ (6.0.9-6) installed in root is up to date.
Nothing to be done
Successfully terminated.
装过opt,tr aria2

snmoney 发表于 2013-2-26 15:09:49

dea 发表于 2013-2-26 14:48 static/image/common/back.gif
直接运行也报错:装过opt,tr aria2

Package libstdc++ (6.0.9-6) installed in root is up to date.

这代表已经装了啊?怎么还会 error while loading shared libraries: libstdc++.so.6 呢,奇怪啊..等其他高手来解答吧

snmoney 发表于 2013-2-26 15:11:18

文雅的堕落 发表于 2013-2-26 09:32 static/image/common/back.gif
其他版本的固件不能插入到855行。
插入地应该是
SubFuncRegularReportDiskErr


是的,发现不同版本的固件在的行数位置不同,应该以找到那个函数的特定位置为准

dea 发表于 2013-2-26 15:56:10

按群友指导,终于成功了
方法如下: /usr/lib和 /opt/lib 下 分别备份libstdc++.so.6
mv libstdc++.so.6 libstdc++.so.6.bak
然后
ln -s libstdc++.so.6.0.9 libstdc++.so.6

再 /etc/cron/cron.d/mailnotice.sh
就成功了! 谢谢 A4G!
页: [1] 2
查看完整版本: 小改wvl自动发送状态报告附带硬盘详细SMART信息