1# possible cron job: 2# 3# cd /cfg/backup 4# { for(i in 'E0 E1' 'E2 E3' 'E4 E5' 'E6 E7' 'F0 F1' 'F2 F3' 'F4 F5'){ 5# x=`{echo $i} 6# venti/mirrorarenas -v /dev/sd$x(1)^/arenas /dev/sd$x(2)^/arenas 7# } } >www/mirror1.txt >[2=1] 8# mv www/mirror1.txt www/mirror.txt 9# awk -f mirror-log.awk www/mirror.txt >www/mirror.html 10 11BEGIN { 12 print "<html><body><h1>mirror status</h1>" 13 print "details in <a href=mirror.txt>mirror.txt</a><br><br>" 14 print "<hr><table cellpadding=5 cellspacing=0 border=0>" 15 laststatus = "" 16 firstarena = "" 17 lastarena = "" 18 status = "" 19 arena = "" 20 21} 22 23function fmt( color) { 24 nfmt++ 25 if(nfmt%2 == 0) 26 color = "#cccccc" 27 else 28 color = "#ffffff" 29 return "<tr bgcolor=" color "><td valign=top>%s</td><td valign=top>%s</td><td>%s</td><td>%s</td><td>" 30} 31 32 33function finish() { 34 if(!arena && !status) 35 return 36 if(info == "" && laststatus == status){ 37 lastarena = arena 38 return 39 } 40 if(firstarena != ""){ 41 if(firstarena == lastarena) 42 printf(fmt(), time, firstarena, "", ""); 43 else 44 printf(fmt(), time, firstarena, "-", lastarena); 45 print laststatus "</td></tr>" 46 firstarena = "" 47 lastarena = "" 48 laststatus = "" 49 } 50 if(info == ""){ 51 firstarena = arena 52 laststatus = status 53 lastarena = arena 54 return 55 } 56 printf(fmt(), time, arena, "", ""); 57 print status 58 if(info != ""){ 59 print "<pre>" 60 printf("%s", info) 61 print "</pre>" 62 } 63 print "</td>" 64} 65 66$3 !~ /:$/ && $4 ~ /^\(.*-.*\)$/ { 67 finish(); 68 arena = $3 69 range = $4 70 status = "" 71 info = "" 72 size = 0 73 time = $1 " " $2 74 next 75} 76 77$3 ~ /:$/ && $0 ~ /^....\/.... ..:..:.. [^ ]/ { 78 if($4 == "0" && $5 == "used" && $6 == "mirrored"){ 79 status = "empty" 80 next 81 } 82 if($4 ~ /^[0-9,]+$/ && $5 == "used" && $6 == "mirrored"){ 83 size = $4 84 status = "partial " size ", mirrored" 85 next 86 } 87 if($4 ~ /^[0-9a-f]+$/ && length($4) == 40 && $5 == "sealed" && $6 == "mirrored"){ 88 status = "sealed, mirrored"; 89 next 90 } 91} 92 93{ 94 info = info $0 "\n" 95} 96 97END{ 98 finish(); 99 status = "done" 100 arena = "" 101 info = "" 102 finish(); 103 print "</table><hr>" 104 print "</body></html>" 105} 106