plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

mirror-log.awk (2025B)


      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 
     11 BEGIN {
     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 
     23 function 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 
     33 function 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 
     97 END{
     98 	finish();
     99 	status = "done"
    100 	arena = ""
    101 	info = ""
    102 	finish();
    103 	print "</table><hr>"
    104 	print "</body></html>"
    105 }