この日記は https://yapud.hatenablog.com/ に引っ越し中
2011-05-17
_ [Software] PowerShell で HTTP の Status みて処理する
Windows Server 2008 使ってるなら PowerShell つかわな損やろ。いつまでも cmd.exe に頼るとかないわー。
.Net Framework で使えるような関数が一通り使えるので、通信を伴ったバッチ操作とかひょいひょい書ける。
たとえば、AサーバはBサーバの応答があるのを前提に作ってある。なのでBサーバの応答がないときはAサーバの停止処理をする必要がある。
Aサーバ内にこんな処理を書いておいて、タスクで数分おきにぐるぐるまわせば良いのじゃないかな
$req = [Net.HttpWebRequest]::Create("http://ServerB.example.com/)
$req.Method = "GET"
$req.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
$req.Timeout = 5000
 
$res = $req.GetResponse()
 
if ( $webRes.StatusCode -ne "OK" ){
  # ERRORの処理を書く。ServerA を止める。
  Stop-Service ServerA
}else{
  # OKの処理を書く。ServerA が止まってたら動かす。
  if ( (Get-Service ServerA).Status -ne "Running" ){
    Start-Service ServerA
  }
}
 
$res.Close()
[ツッコミを入れる]
| 前 | 2011年 5月 | 次 | ||||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 | 
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 
| 8 | 9 | 10 | 11 | 12 | 13 | 14 | 
| 15 | 16 | 17 | 18 | 19 | 20 | 21 | 
| 22 | 23 | 24 | 25 | 26 | 27 | 28 | 
| 29 | 30 | 31 | ||||