From 57b78c4c0d66cfababdac72c9e54ac70cf5537ab Mon Sep 17 00:00:00 2001 From: hummypkg Date: Thu, 25 Oct 2012 23:31:09 +0000 Subject: [PATCH] new disk diagnostics. Progress on mobile git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1173 2a923420-c742-0410-a762-8d5b09965624 --- var/mongoose/html/css/style.css | 6 ++ var/mongoose/html/diag/diag.jim | 1 + var/mongoose/html/diag/disk.jim | 162 +++++++++++++++++++++++++++++ var/mongoose/html/diag/script.js | 5 + var/mongoose/html/img/disc.png | Bin 0 -> 111448 bytes var/mongoose/html/m/channel.jim | 2 +- var/mongoose/html/m/index.jim | 2 +- var/mongoose/html/m/lib/header.jim | 4 +- var/mongoose/html/m/script.js | 4 + var/mongoose/html/m/style.css | 12 +++ var/mongoose/lib/system.class | 4 +- 11 files changed, 198 insertions(+), 4 deletions(-) create mode 100755 var/mongoose/html/diag/disk.jim create mode 100644 var/mongoose/html/img/disc.png diff --git a/var/mongoose/html/css/style.css b/var/mongoose/html/css/style.css index ea9e7d73..61eeb540 100644 --- a/var/mongoose/html/css/style.css +++ b/var/mongoose/html/css/style.css @@ -247,6 +247,12 @@ pre, .pre color: black; } +.redshade +{ + background: #ff4000; + color: white; +} + img.progress { background: transparent url(/img/percentback.png) top left no-repeat; diff --git a/var/mongoose/html/diag/diag.jim b/var/mongoose/html/diag/diag.jim index b4a0b5a4..558c8485 100755 --- a/var/mongoose/html/diag/diag.jim +++ b/var/mongoose/html/diag/diag.jim @@ -46,6 +46,7 @@ puts { + diff --git a/var/mongoose/html/diag/disk.jim b/var/mongoose/html/diag/disk.jim new file mode 100755 index 00000000..1fdad3be --- /dev/null +++ b/var/mongoose/html/diag/disk.jim @@ -0,0 +1,162 @@ +#!/mod/bin/jimsh + +package require cgi +source /mod/webif/lib/setup +require system.class + +puts "Content-Type: text/html" +puts "" + +header + +set space [system diskspace] +set device [string range [lindex $space 5] 0 end-1] + +set smart Unknown +set line "" +# smartctl uses non-zero exit status to indicate health hence catch. +catch { set line [exec /mod/bin/smartctl -H $device | sed -n 5p] } msg +if {$msg ne "" && $line eq ""} { set line $msg } +if {$line ne ""} { + set smart [string range [lindex [split $line :] 1] 1 end] +} + +puts " +

+ + SMART data read from device $device +

+
+Disk Information + + +" +foreach line [split [exec /mod/bin/smartctl -i $device] "\n"] { + if {[string match "*Not in smartctl database*" $line]} continue + if {[string match "*: *" $line]} { + regsub -all -- {[[:space:]]+} $line " " line + set fields [split $line ":"] + puts "" + puts "" + } +} +puts { +
SMART Status$smart
[lindex $fields 0][join [lrange $fields 1 end] :]
+
+ +
+Attributes + + + + + + + + + + + + + +} + +#set flag_autokeep 0x20 +#set flag_count 0x10 +#set flag_rate 0x08 +#set flag_speed 0x04 +#set flag_online 0x02 +#set flag_prefailure 0x01 + +set flaglist [split "POSRCK" ""] +set flagdescr [list \ + "P prefailure warning" \ + "O updated online" \ + "S speed/performance" \ + "R error rate" \ + "C event count" \ + "K auto-keep" \ +] + +proc flags {val} { + global flaglist flagdescr + set f "" + set fx "" + loop i 0 [llength $flaglist] { + if {[expr $val & (1 << $i)]} { + append f [lindex $flaglist $i] + append fx "[lindex $flagdescr $i]\n" + } else { + append f "-" + } + } + return "$f" +} + +set i 0 +foreach line [split [exec /mod/bin/smartctl -A $device] "\n"] { + regsub -all -- {[[:space:]]+} $line " " line + regsub -all -- {^[[:space:]]+} $line "" line + if {[incr i] < 8} continue + lassign [split $line] \ + id name flags val worst thresh type updated when rval + set class normal + switch $id { + 5 { if {$rval > 0} { set class orangeshade } } + 197 { if {$rval > 0} { set class redshade } } + 198 { if {$rval > 0} { set class redshade } } + } + puts "" + puts " + + + + + + + + + + + " +} + +puts { +
IDNameFlagsRaw ValueValueWorstThreshTypeUpdatedWhen Failed
$id$name[flags $flags]$rval$val$worst$thresh$type$updated$when
+
+ +
+Self-test logs + + + + + + + + + +} + +set i 0 +foreach line [split [exec /mod/bin/smartctl -l selftest $device] "\n"] { + regsub -all -- {[[:space:]][[:space:]]+} $line "|" line + if {[incr i] < 7} continue + lassign [split $line "|"] id name status remaining when lba + puts " + + + " +} + +puts { +
No.DescriptionStatusRemainingWhenFirst Error LBA
$id$name$status + $remaining + $when + $lba +
+
+} + +footer + diff --git a/var/mongoose/html/diag/script.js b/var/mongoose/html/diag/script.js index e31b0ff7..f4b2b3ba 100644 --- a/var/mongoose/html/diag/script.js +++ b/var/mongoose/html/diag/script.js @@ -49,6 +49,11 @@ $('#channelinfo').click(function(e) { window.location = '/cgi-bin/channel.jim'; }); +$('#diskdiag').click(function(e) { + e.preventDefault(); + window.location = 'disk.jim'; +}); + $('#dlna').click(function(e) { e.preventDefault(); window.location = '/dlna/dlna.jim'; diff --git a/var/mongoose/html/img/disc.png b/var/mongoose/html/img/disc.png new file mode 100644 index 0000000000000000000000000000000000000000..1b21e1c4a6e4dc73ab05329c5d4dc2f39f09de04 GIT binary patch literal 111448 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