如何使此在线站点检查器正常工作?

时间:2019-01-02 14:35:48

标签: batch-file curl cmd findstr

我正在Windows上使用CURL创建一个在线站点检查器(告诉您它是打开还是关闭),但似乎不起作用。

我尝试在Windows上创建一个简单的脚本。首先,我使用curl检查Google,并在statusgoogle.txt文件中输出重定向。然后,我要求findstr查找句子“ Connection created”。这意味着该网站已启动。 findstr的错误代码0表示它找到了所要查找的内容。因此,如果找到了所要查找的内容,则会收到一条消息“站点已启动”。如果找不到,我将得到一个不同的错误代码,因此该消息应位于“站点向下”。

问题是: 我都收到消息。我已经尝试使用if%errorlevel%,但是它也没有用。

此外,我想要一个包含多个网站的代码,因为我正在创建一个bat脚本,该脚本实际上一次可以检查大约9个或10个网站。

curl -i http://www.google.com/ 1> statusgoogle.txt
findstr /c:"Connection established" statusgoogle.txt
if errorlevel 0 (GOTO :upwarning) else (GOTO :downwarning)
:upwarning
echo site up
:downwarning
echo site down

如果findstr找到字符串“ Connection created”,那么我应该期待一条带有“ site up”的消息。实际情况是这样的:它同时显示“站点上”和“站点下”的消息。

3 个答案:

答案 0 :(得分:2)

经典if errorlevel 0命令的误解之一,
转换为(如果有,请参阅帮助)

if errorlevel is 0 or greater

对于肯定的错误级别总是如此。

要么

  • 检查if errorlevel 1并反转逻辑
    if errorlevel 1 (GOTO :downwarning) else (GOTO :upwarning)
  • 检查%errorlevel%的当前值
    if %errorlevel%==0 (GOTO :upwarning) else (GOTO :downwarning)
  • 在成功/失败&&/||上使用条件执行

curl -i http://www.google.com/ 1> statusgoogle.txt
findstr /c:"Connection established" statusgoogle.txt &&(GOTO :upwarning)||(GOTO :downwarning)

:upwarning
echo site up
goto :eof

:downwarning
echo site down

答案 1 :(得分:1)

问题是,在您跳到“警告”之后,其余代码仍将执行。您必须在“回声现场”之后终止脚本:

redux

curl -i http://www.google.com/ 1> statusgoogle.txt findstr /c:"Connection established" statusgoogle.txt if errorlevel 0 (GOTO :upwarning) else (GOTO :downwarning) :upwarning echo site up goto :EOF :downwarning echo site down 的意思是“文件结束”。 “退出/ b”也将起作用。

答案 2 :(得分:0)

如果您能够使用PowerShell,则非常简单。

try {
    Invoke-WebRequest "http://www.hp.com" | Out-Null
    "Web site is up"
} catch {
    "Web site is not up"
}