DOMを操作して特定のデータを抽出するスクリプト書いた
Apacheってmod_proxy_balancerていうモジュールを使うとリバースプロキシとして使えて、ブラウザからbalancer-managerていう管理画面にアクセスすると、振り分けっぷりが分かる。だけどいちいちブラウザでぽちぽちリロードすんのめんどくさいので、自動的にログ取るスクリプト書いた。
このページの赤枠のとこだけ引っこ抜きたい。
こんな感じになった。
var uri = WScript.Arguments(0); var ie = WScript.CreateObject("InternetExplorer.Application"); ie.Visible = true; while(ie != null){ startTime = +new Date(); ie.Navigate(uri); while(ie.Busy || ie.readystate != 4){ WScript.Sleep(100); } var h3s = ie.document.getElementsByTagName("h3"); var tables = ie.document.getElementsByTagName("table"); for(var i = 0; i < h3s.length; i++){ WScript.Echo(h3s[i].innerText); for(var j = 1; j < tables[i * 2 + 1].rows.length; j++){ WScript.Echo(tables[i * 2 + 1].rows[j].cells[0].getElementsByTagName("a")[0].innerHTML + "\t" + tables[i * 2 + 1].rows[j].cells[5].innerHTML + "\t" + tables[i * 2 + 1].rows[j].cells[6].innerHTML); } } endTime = +new Date(); WScript.Echo(new Date() + "\t" + (endTime - startTime) + "\n"); WScript.Sleep(60000); }
こんな感じで使う。
>cscript //nologo bmstat.js http://192.168.2.31/balancer-manager LoadBalancer Status for balancer://backend http://192.168.2.32/ Ok 11 http://192.168.2.33/ Ok 10 Mon Jan 9 17:59:47 UTC+0900 2012 118 LoadBalancer Status for balancer://backend http://192.168.2.32/ Ok 11 http://192.168.2.33/ Ok 10 Mon Jan 9 17:59:52 UTC+0900 2012 121
去年の9/27に作ったスクリプト↓を改造したもの。