在 Linux 终端快速检测网站是否宕机的 6 个方法


在 Linux 终端快速检测网站是否宕机的 6 个方法

文章插图
 
本教程教你怎样在 linux 终端快速检测一个网站是否宕机 。-- Magesh Maruthamuthu(作者)
 
你可能已经了解了一些类似的命令,像 ping、curl 和 wget 。我们在本教程中又加入了一些其他命令 。同时,我们也加入了不同的选项来检测单个和多个主机的信息 。
本文将帮助你检测网站是否宕机 。但是如果你在维护一些网站,希望网站宕掉时得到实时的报警,我推荐你去使用实时网站监控工具 。这种工具有很多,有些是免费的,大部分收费 。根据你的需求,选择合适的工具 。在后续的文章中我们会涉及这个主题 。
方法 1:使用 fping 命令检测一个网站是否宕机fping 命令 是一个类似 ping 的程序,使用互联网控制消息协议(ICMP)的 回应请求报文(echo request)来判断目标主机是否能回应 。fping 与 ping 的不同之处在于它可以并行地 ping 任意数量的主机,也可以从一个文本文件读入主机名称 。fping 发送一个 ICMP 回应请求后不等待目标主机响应,就以轮询模式向下一个目标主机发请求 。如果一个目标主机有响应,那么它就被标记为存活的,然后从检查目标列表里去掉 。如果一个目标主机在限定的时间和(或)重试次数内没有响应,则被指定为网站无法到达的 。
# fping 2daygeek.com linuxtechnews.com magesh.co.in2daygeek.com is alivelinuxtechnews.com is alivemagesh.co.in is alive方法 2:使用 http 命令检测一个网站是否宕机HTTPie(读作 aitch-tee-tee-pie)是一个命令行 HTTP 客户端 。httpie 是一个可以与 web 服务通过 CLI 进行交互的现代工具 。httpie 工具提供了简单的 http 命令,可以通过发送简单的、自然语言语法的任意 HTTP 请求得到多彩的结果输出 。HTTPie 可以用来对 HTTP 服务器进行测试、调试和基本的交互 。
# http 2daygeek.comHTTP/1.1 301 Moved PermanentlyCF-RAY: 535b66722ab6e5fc-LHRCache-Control: max-age=3600Connection: keep-aliveDate: Thu, 14 Nov 2019 19:30:28 GMTExpires: Thu, 14 Nov 2019 20:30:28 GMTLocation: https://2daygeek.com/Server: cloudflareTransfer-Encoding: chunkedVary: Accept-Encoding方法 3:使用 curl 命令检测一个网站是否宕机curl 命令 是一个用于在服务器间通过支持的协议(DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP3、POP3S、RTMP、RTSP、SCP、SFTP、SMTP、SMTPS、TELNET 和 TFTP)传输数据的工具 。这个工具不支持用户交互 。curl 也支持使用代理、用户认证、FTP 上传、HTTP POST 请求、SSL 连接、cookie、断点续传、Metalink 等等 。curl由 libcurl 库提供所有与传输有关的能力 。
# curl -I https://www.magesh.co.inHTTP/2 200date: Thu, 14 Nov 2019 19:39:47 GMTcontent-type: text/htmlset-cookie: __cfduid=db16c3aee6a75c46a504c15131ead3e7f1573760386; expires=Fri, 13-Nov-20 19:39:46 GMT; path=/; domain=.magesh.co.in; HttpOnlyvary: Accept-Encodinglast-modified: Sun, 14 Jun 2015 11:52:38 GMTx-cache: HIT from Backendcf-cache-status: DYNAMICexpect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"server: cloudflarecf-ray: 535b74123ca4dbf3-LHR如果你只想看 HTTP 状态码而不是返回的全部信息,用下面的 curl 命令:
# curl -I "www.magesh.co.in" 2>&1 | awk '/HTTP// {print $2}' 200如果你想看一个网站是否宕机,用下面的 bash 脚本:
# vi curl-url-check.sh#!/bin/bashif curl -I "https://www.magesh.co.in" 2>&1 | grep -w "200|301" ; then echo "magesh.co.in is up"else echo "magesh.co.in is down"fi当你把脚本内容添加到一个文件后,执行文件,查看结果:
# sh curl-url-check.shHTTP/2 200magesh.co.in is up如果你想看多个网站的状态,使用下面的 shell 脚本:
# vi curl-url-check-1.sh#!/bin/bashfor site in www.google.com google.co.in www.xyzzz.comdoif curl -I "$site" 2>&1 | grep -w "200|301" ; then echo "$site is up"else echo "$site is down"fiecho "----------------------------------"done当你把上面脚本内容添加到一个文件后,执行文件,查看结果:
# sh curl-url-check-1.shHTTP/1.1 200 OKwww.google.com is up----------------------------------HTTP/1.1 301 Moved Permanentlygoogle.co.in is up----------------------------------www.xyzzz.com is down----------------------------------方法 4:使用 wget 命令检测一个网站是否宕机wget 命令 (前身是 Geturl)是一个自由开源的命令行下载工具,通过 HTTP、HTTPS、FTP 和其他广泛使用的互联网协议获取文件 。wget 是非交互式的命令行工具,由 World Wide Web 和 get 得名 。wget 相对于其他工具来说更优秀,功能包括后台运行、递归下载、多文件下载、断点续传、非交互式下载和大文件下载 。


推荐阅读