我有一个服务器运行一个网站,由于某种原因,只要感觉就像死了一样。不知道为什么,我知道我将要描述的这个解决方案只是一种放火而不解决问题的方法。但现在没关系。连续检查网站是否可用与Powershell
所以,我想在服务器上运行一个Powershellscript,它连续检查网站是否可用,并基于该网站执行一些魔法让它再次运行。
到目前为止,我有这个代码。
当我打开Apache并运行脚本时,“运行”功能正在工作。 当我关闭Apache并运行脚本时,函数“notrunning”正在工作。
但问题是,当我启动Apache,运行脚本和“运行”是连续循环,我打开了Apache(脚本仍在运行),我希望它继续“不运行”,解决问题,再次启动我的服务,并从一开始就检查网站是否启动并转到“运行”。但它卡在“跑步”上,不会变成“不跑”。
任何想法我可以做到这一点?
(我编辑的脚本拿出实际过程和服务名称为我公司的缘故)
function checkSite
{
[string] $url = 'http://websitegoeshere.com'
[net.httpWebRequest] $req = [net.webRequest]::create($url)
$req.Method = "HEAD"
[net.httpWebResponse] $res = $req.getResponse()
while ($res.StatusCode -ge "200") {running} notrunning
}
function running
{
cls;
Write-Host " -=IS-checker=-" -fore yellow
Write-Host "" -fore green
Write-Host "----------------------" -fore green
Write-Host " Access to web = OK " -fore green
Write-Host "----------------------" -fore green
sleep 60
}
function notrunning
{
cls;
Write-Host "-=IS-checker=-" -fore yellow
Write-Host "" -fore red
Write-Host "-------------------------" -fore red
Write-Host " Site down - Site Down " -fore red
Write-Host "-------------------------" -fore red
sleep 2
$process = "process-name-goes-here"
Write-Host "Stopping process" $process -fore red
Stop-Process -processname $process
sleep 5
$service = "service-name-goes-here"
Write-Host "Killing service" $service -fore red
Stop-Service $service -Force
sleep 5
Write-Host "Starting service" $service -fore green
Start-Service $service
sleep 5
$LogTime = Get-Date -Format "yyyy-MM-dd hh-mm-ss"
$LogFile = 'C:\PSLog\'+"LOG_"+$LogTime+".log"
$LogTime+" Stopped "+$process+", Stopped "+$service+", Started "+$service | Out-File $LogFile
Write-Host "Logfile written to"$LogFile -fore green
sleep 5
checkSite
}
checkSite
有些工具可以获得(有些甚至是免费/开放源代码,[其他](http://www.paessler.com/network_monitoring/website_monitoring)有可能需要升级到的付费版本)一个网站为您触发警报或在没有回应时采取其他行动。为什么重新发明轮子? – alroc
我刚开始学习Powershell,认为创建一些有用的东西会很有趣:) – Frigol33t
规则1:不要创建某人已经写过的东西(并且不提供/低成本),除非它纯粹是一种教育练习。他们可能做得更好 - 这在商业环境中可能变得很重要。 – alroc