【问题标题】:Batch script to tell if a website is up or down判断一个网站是启动还是关闭的批处理脚本
【发布时间】:2013-05-06 19:57:23
【问题描述】:

我的问题是 ping 不能告诉我网站是启动还是关闭。我需要知道网站是打开还是关闭。如果它没有重新启动脚本。如果有人可以帮助我,那就太棒了。

我唯一能想到的就是抓取网站的内容并查看它是否启动。

我想用 Apatche Tomcat 在服务器上运行它。

@echo off


:first
PING -n 5 google.com | FIND "TTL" > nul
IF %errorlevel% == 0 (
echo Website is up. 
goto :first
) ELSE (
echo Website is down. Restarting service
goto :second
echo restart
echo ping
)


:: This calls the second loop
:second

:: This will stop the service
net stop TapiSrv 

ping -n 10 127.0.0.1 

:: This will start the service
net start TapiSrv

:: This check to see if the website is up
GOTO :first

【问题讨论】:

  • 您可能应该考虑使用 curlwget 之类的东西来执行此操作,具体取决于您对“网站已启动”的准确定义。另外,请考虑使用 PowerShell。
  • 检查 BITSADMIN - 这是用于下载的本机 Windows 命令。但您将能够从站点读取响应。
  • 如果可以的话,我不想添加第三方软件。我确实有一个 PHP 方式。但我不知道如何让 php 和批处理工作..

标签: apache tomcat batch-file web


【解决方案1】:

这是我拼凑起来的——它在 Win 8 中工作。

请注意,它会告诉您网站是否正在响应消息 - 它不会检查它所服务的页面是正常操作页面还是错误消息。

@echo off
if "%~1"=="" (
echo %0 www.url.com
echo Checks the status of the URL
pause
goto :EOF
)


 >"%temp%\geturl.vbs" echo Set objArgs = WScript.Arguments
>>"%temp%\geturl.vbs" echo url = objArgs(0)
>>"%temp%\geturl.vbs" echo pix = objArgs(1)
>>"%temp%\geturl.vbs" echo With CreateObject("MSXML2.XMLHTTP")
>>"%temp%\geturl.vbs" echo .open "GET", url, False
>>"%temp%\geturl.vbs" echo .send
>>"%temp%\geturl.vbs" echo a = .ResponseBody
>>"%temp%\geturl.vbs" echo End With
>>"%temp%\geturl.vbs" echo With CreateObject("ADODB.Stream")
>>"%temp%\geturl.vbs" echo .Type = 1 'adTypeBinary
>>"%temp%\geturl.vbs" echo .Mode = 3 'adModeReadWrite
>>"%temp%\geturl.vbs" echo .Open
>>"%temp%\geturl.vbs" echo .Write a
>>"%temp%\geturl.vbs" echo .SaveToFile pix, 2 'adSaveCreateOverwrite
>>"%temp%\geturl.vbs" echo .Close
>>"%temp%\geturl.vbs" echo End With


cscript /nologo "%temp%\geturl.vbs" http://%1 url.htm 2>nul 
if not exist url.htm (
echo site is down or access is denied
) else (
for %%a in (url.htm) do if %%~za GTR 0 echo site is up
del url.htm
)
del "%temp%\geturl.vbs"
pause

【讨论】:

  • 这个脚本geturl.vbs在哪里
  • 由批处理文件创建。空行之间的部分。
【解决方案2】:

尝试unixutilsGnuWin32 中的wget 程序,例如:

wget --timeout=5 --tries=1 --quiet --spider http://google.com >nul 2>&1 && echo site is up || echo site is down

wget 选项和参数:

GNU Wget 1.8.2,一个非交互式网络检索器。 用法:wget [选项]... [URL]... 多头期权的强制性参数对于空头期权也是强制性的。 启动: -V, --version 显示 Wget 的版本并退出。 -h, --help 打印此帮助。 -b, --background 启动后进入后台。 -e, --execute=COMMAND 执行 `.wgetrc' 风格的命令。 记录和输入文件: -o, --output-file=FILE 将消息记录到 FILE。 -a, --append-output=FILE 将消息附加到 FILE。 -d, --debug 打印调试输出。 -q, --quiet 安静(无输出)。 -v, --verbose 是详细的(这是默认值)。 -nv, --non-verbose 关闭冗长,而不是安静。 -i, --input-file=FILE 在 FILE 中找到的下载 URL。 -F, --force-html 将输入文件视为 HTML。 -B, --base=URL 将 URL 附加到 -F -i 文件中的相对链接。 --sslcertfile=FILE 可选客户端证书。 --sslcertkey=KEYFILE 此证书的可选密钥文件。 --egd-file=文件 EGD 套接字的文件名。 下载: --bind-address=ADDRESS 绑定到本地主机上的 ADDRESS(主机名或 IP)。 -t, --tries=NUMBER 将重试次数设置为 NUMBER(0 个无限制)。 -O -​​-output-document=FILE 将文档写入 FILE。 -nc, --no-clobber 不要破坏现有文件或使用 .# 后缀。 -c, --continue 继续获取部分下载的文件。 --progress=TYPE 选择进度表类型。 -N, --timestamping 不重新检索文件,除非比本地文件新。 -S, --server-response 打印服务器响应。 --spider 不下载任何东西。 -T, --timeout=SECONDS 将读取超时设置为 SECONDS。 -w, --wait=SECONDS 在检索之间等待 SECONDS。 --waitretry=SECONDS 在一次检索的重试之间等待 1...SECONDS。 --random-wait 在检索之间等待 0...2*WAIT 秒。 -Y, --proxy=on/off 打开或关闭代理。 -Q, --quota=NUMBER 将检索配额设置为 NUMBER。 --limit-rate=RATE 将下载速率限制为 RATE。 目录: -nd --no-directories 不创建目录。 -x, --force-directories 强制创建目录。 -nH, --no-host-directories 不创建主机目录。 -P, --directory-prefix=PREFIX 将文件保存到 PREFIX/... --cut-dirs=NUMBER 忽略 NUMBER 个远程目录组件。 HTTP 选项: --http-user=USER 将 http 用户设置为 USER。 --http-passwd=PASS 设置 http 密码为 PASS。 -C, --cache=on/off (dis) 允许服务器缓存数据(通常允许)。 -E, --html-extension 保存所有带有 .html 扩展名的 text/html 文档。 --ignore-length 忽略“Content-Length”标头字段。 --header=STRING 在标题中插入 STRING。 --proxy-user=USER 将 USER 设置为代理用户名。 --proxy-passwd=PASS 将 PASS 设置为代理密码。 --referer=URL 在 HTTP 请求中包含 `Referer: URL' 标头。 -s, --save-headers 将 HTTP 标头保存到文件中。 -U, --user-agent=AGENT 标识为 AGENT 而不是 Wget/VERSION。 --no-http-keep-alive 禁用 HTTP keep-alive(持久连接)。 --cookies=off 不使用cookies。 --load-cookies=FILE 在会话之前从 FILE 加载 cookie。 --save-cookies=FILE 会话结束后将 cookie 保存到 FILE。 FTP 选项: -nr, --dont-remove-listing 不删除“.listing”文件。 -g, --glob=on/off 打开或关闭文件名通配。 --passive-ftp 使用“被动”传输模式。 --retr-symlinks 递归时,获取链接到文件(不是目录)。 递归检索: -r, --recursive recursive web-suck -- 小心使用! -l, --level=NUMBER 最大递归深度(inf 或 0 表示无限)。 --delete-after 下载后在本地删除文件。 -k, --convert-links 将非相对链接转换为相对链接。 -K, --backup-converted 在转换文件 X 之前,备份为 X.orig。 -m,--mirror 快捷方式选项等效于 -r -N -l inf -nr。 -p, --page-requisites 获取显示 HTML 页面所需的所有图像等。 递归接受/拒绝: -A, --accept=LIST 逗号分隔的已接受扩展列表。 -R, --reject=LIST 逗号分隔的被拒绝扩展列表。 -D, --domains=LIST 接受域的逗号分隔列表。 --exclude-domains=LIST 以逗号分隔的被拒绝域列表。 --follow-ftp 跟随 HTML 文档中的 FTP 链接。 --follow-tags=LIST 逗号分隔的 HTML 标签列表。 -G, --ignore-tags=LIST 逗号分隔的忽略 HTML 标记列表。 -H, --span-hosts 递归时转到外部主机。 -L, --relative 仅遵循相对链接。 -I, --include-directories=LIST 允许的目录列表。 -X, --exclude-directories=LIST 排除目录列表。 -np, --no-parent 不上升到父目录。

【讨论】:

    【解决方案3】:

    您可以在 Web 应用程序上使用 servlet 或 'php',它们可以打印简单的文本,例如“正在运行”或“当前时间”……您可以在 HTTPCLient(Java) 或其他方式的帮助下点击该 URl并检查它是否启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-11
      • 1970-01-01
      • 2013-05-12
      • 2015-05-11
      • 2014-08-29
      • 2012-02-09
      • 2019-05-21
      相关资源
      最近更新 更多