| # possible cron job: |
| # |
| # cd /cfg/backup |
| # { for(i in 'E0 E1' 'E2 E3' 'E4 E5' 'E6 E7' 'F0 F1' 'F2 F3' 'F4 F5'){ |
| # x=`{echo $i} |
| # venti/mirrorarenas -v /dev/sd$x(1)^/arenas /dev/sd$x(2)^/arenas |
| # } } >www/mirror1.txt >[2=1] |
| # mv www/mirror1.txt www/mirror.txt |
| # awk -f mirror-log.awk www/mirror.txt >www/mirror.html |
| |
| BEGIN { |
| print "<html><body><h1>mirror status</h1>" |
| print "details in <a href=mirror.txt>mirror.txt</a><br><br>" |
| print "<hr><table cellpadding=5 cellspacing=0 border=0>" |
| laststatus = "" |
| firstarena = "" |
| lastarena = "" |
| status = "" |
| arena = "" |
| |
| } |
| |
| function fmt( color) { |
| nfmt++ |
| if(nfmt%2 == 0) |
| color = "#cccccc" |
| else |
| color = "#ffffff" |
| return "<tr bgcolor=" color "><td valign=top>%s</td><td valign=top>%s</td><td>%s</td><td>%s</td><td>" |
| } |
| |
| |
| function finish() { |
| if(!arena && !status) |
| return |
| if(info == "" && laststatus == status){ |
| lastarena = arena |
| return |
| } |
| if(firstarena != ""){ |
| if(firstarena == lastarena) |
| printf(fmt(), time, firstarena, "", ""); |
| else |
| printf(fmt(), time, firstarena, "-", lastarena); |
| print laststatus "</td></tr>" |
| firstarena = "" |
| lastarena = "" |
| laststatus = "" |
| } |
| if(info == ""){ |
| firstarena = arena |
| laststatus = status |
| lastarena = arena |
| return |
| } |
| printf(fmt(), time, arena, "", ""); |
| print status |
| if(info != ""){ |
| print "<pre>" |
| printf("%s", info) |
| print "</pre>" |
| } |
| print "</td>" |
| } |
| |
| $3 !~ /:$/ && $4 ~ /^\(.*-.*\)$/ { |
| finish(); |
| arena = $3 |
| range = $4 |
| status = "" |
| info = "" |
| size = 0 |
| time = $1 " " $2 |
| next |
| } |
| |
| $3 ~ /:$/ && $0 ~ /^....\/.... ..:..:.. [^ ]/ { |
| if($4 == "0" && $5 == "used" && $6 == "mirrored"){ |
| status = "empty" |
| next |
| } |
| if($4 ~ /^[0-9,]+$/ && $5 == "used" && $6 == "mirrored"){ |
| size = $4 |
| status = "partial " size ", mirrored" |
| next |
| } |
| if($4 ~ /^[0-9a-f]+$/ && length($4) == 40 && $5 == "sealed" && $6 == "mirrored"){ |
| status = "sealed, mirrored"; |
| next |
| } |
| } |
| |
| { |
| info = info $0 "\n" |
| } |
| |
| END{ |
| finish(); |
| status = "done" |
| arena = "" |
| info = "" |
| finish(); |
| print "</table><hr>" |
| print "</body></html>" |
| } |