在 Linux 終端快速檢測網站是否宕機的 6 個方法

本教程教你怎樣在 Linux 終端快速檢測一個網站是否宕機。html

你可能已經瞭解了一些相似的命令,像 pingcurlwget。咱們在本教程中又加入了一些其餘命令。同時,咱們也加入了不一樣的選項來檢測單個和多個主機的信息。linux

本文將幫助你檢測網站是否宕機。可是若是你在維護一些網站,但願網站宕掉時獲得實時的報警,我推薦你去使用實時網站監控工具。這種工具備不少,有些是免費的,大部分收費。根據你的需求,選擇合適的工具。在後續的文章中咱們會涉及這個主題。git

方法 1:使用 fping 命令檢測一個網站是否宕機

fping 命令 是一個相似 ping 的程序,使用互聯網控制消息協議(ICMP)的迴應請求報文echo request來判斷目標主機是否能迴應。fpingping 的不一樣之處在於它能夠並行地 ping 任意數量的主機,也能夠從一個文本文件讀入主機名稱。fping 發送一個 ICMP 迴應請求後不等待目標主機響應,就以輪詢模式向下一個目標主機發請求。若是一個目標主機有響應,那麼它就被標記爲存活的,而後從檢查目標列表裏去掉。若是一個目標主機在限定的時間和(或)重試次數內沒有響應,則被指定爲網站沒法到達的。github

# fping 2daygeek.com linuxtechnews.com magesh.co.in

2daygeek.com is alive
linuxtechnews.com is alive
magesh.co.in is alive
複製代碼

方法 2:使用 http 命令檢測一個網站是否宕機

HTTPie(讀做 aitch-tee-tee-pie)是一個命令行 HTTP 客戶端。httpie 是一個能夠與 web 服務經過 CLI 進行交互的現代工具。httpie 工具提供了簡單的 http 命令,能夠經過發送簡單的、天然語言語法的任意 HTTP 請求獲得多彩的結果輸出。HTTPie 能夠用來對 HTTP 服務器進行測試、調試和基本的交互。web

# http 2daygeek.com

HTTP/1.1 301 Moved Permanently
CF-RAY: 535b66722ab6e5fc-LHR
Cache-Control: max-age=3600
Connection: keep-alive
Date: Thu, 14 Nov 2019 19:30:28 GMT
Expires: Thu, 14 Nov 2019 20:30:28 GMT
Location: https://2daygeek.com/
Server: cloudflare
Transfer-Encoding: chunked
Vary: Accept-Encoding
複製代碼

方法 3:使用 curl 命令檢測一個網站是否宕機

curl 命令 是一個用於在服務器間經過支持的協議(DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、POP三、POP3S、RTMP、RTSP、SCP、SFTP、SMTP、SMTPS、TELNET 和 TFTP)傳輸數據的工具。這個工具不支持用戶交互。curl 也支持使用代理、用戶認證、FTP 上傳、HTTP POST 請求、SSL 鏈接、cookie、斷點續傳、Metalink 等等。curl由 libcurl 庫提供全部與傳輸有關的能力。shell

# curl -I https://www.magesh.co.in

HTTP/2 200
date: Thu, 14 Nov 2019 19:39:47 GMT
content-type: text/html
set-cookie: __cfduid=db16c3aee6a75c46a504c15131ead3e7f1573760386; expires=Fri, 13-Nov-20 19:39:46 GMT; path=/; domain=.magesh.co.in; HttpOnly
vary: Accept-Encoding
last-modified: Sun, 14 Jun 2015 11:52:38 GMT
x-cache: HIT from Backend
cf-cache-status: DYNAMIC
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
server: cloudflare
cf-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/bash
if 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
複製代碼

當你把腳本內容添加到一個文件後,執行文件,查看結果:ruby

# sh curl-url-check.sh

HTTP/2 200
magesh.co.in is up
複製代碼

若是你想看多個網站的狀態,使用下面的 shell 腳本:bash

# vi curl-url-check-1.sh

#!/bin/bash
for site in www.google.com google.co.in www.xyzzz.com
do
if curl -I "$site" 2>&1 | grep -w "200\|301" ; then
    echo "$site is up"
else
    echo "$site is down"
fi
echo "----------------------------------"
done
複製代碼

當你把上面腳本內容添加到一個文件後,執行文件,查看結果:

# sh curl-url-check-1.sh

HTTP/1.1 200 OK
www.google.com is up
----------------------------------
HTTP/1.1 301 Moved Permanently
google.co.in is up
----------------------------------
www.xyzzz.com is down
----------------------------------
複製代碼

方法 4:使用 wget 命令檢測一個網站是否宕機

wget 命令(前身是 Geturl)是一個自由開源的命令行下載工具,經過 HTTP、HTTPS、FTP 和其餘普遍使用的互聯網協議獲取文件。wget 是非交互式的命令行工具,由 World Wide Web 和 get 得名。wget 相對於其餘工具來講更優秀,功能包括後臺運行、遞歸下載、多文件下載、斷點續傳、非交互式下載和大文件下載。

# wget -S --spider https://www.magesh.co.in

Spider mode enabled. Check if remote file exists.
--2019-11-15 01:22:00--  https://www.magesh.co.in/
Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt'
Resolving www.magesh.co.in (www.magesh.co.in)… 104.18.35.52, 104.18.34.52, 2606:4700:30::6812:2334, …
Connecting to www.magesh.co.in (www.magesh.co.in)|104.18.35.52|:443… connected.
HTTP request sent, awaiting response…
  HTTP/1.1 200 OK
  Date: Thu, 14 Nov 2019 19:52:01 GMT
  Content-Type: text/html
  Connection: keep-alive
  Set-Cookie: __cfduid=db73306a2f1c72c1318ad4709ef49a3a01573761121; expires=Fri, 13-Nov-20 19:52:01 GMT; path=/; domain=.magesh.co.in; HttpOnly
  Vary: Accept-Encoding
  Last-Modified: Sun, 14 Jun 2015 11:52:38 GMT
  X-Cache: HIT from Backend
  CF-Cache-Status: DYNAMIC
  Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
  Server: cloudflare
  CF-RAY: 535b85fe381ee684-LHR
Length: unspecified [text/html]
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.
複製代碼

若是你只想看 HTTP 狀態碼而不是返回的所有結果,用下面的 wget 命令:

# wget --spider -S "www.magesh.co.in" 2>&1 | awk '/HTTP\// {print $2}'
 200
複製代碼

若是你想看一個網站是否宕機,用下面的 bash 腳本:

# vi wget-url-check.sh

#!/bin/bash
if wget --spider -S "https://www.google.com" 2>&1 | grep -w "200\|301" ; then
    echo "Google.com is up"
else
    echo "Google.com is down"
fi
複製代碼

當你把腳本內容添加到一個文件後,執行文件,查看結果:

# wget-url-check.sh

HTTP/1.1 200 OK
Google.com is up
複製代碼

若是你想看多個網站的狀態,使用下面的 shell 腳本:

# vi curl-url-check-1.sh

#!/bin/bash
for site in www.google.com google.co.in www.xyzzz.com
do
if wget --spider -S "$site" 2>&1 | grep -w "200\|301" ; then
    echo "$site is up"
else
    echo "$site is down"
fi
echo "----------------------------------"
done
複製代碼

當你把上面腳本內容添加到一個文件後,執行文件,查看結果:

# sh wget-url-check-1.sh

HTTP/1.1 200 OK
www.google.com is up
----------------------------------
HTTP/1.1 301 Moved Permanently
google.co.in is up
----------------------------------
www.xyzzz.com is down
----------------------------------
複製代碼

方法 5:使用 lynx 命令檢測一個網站是否宕機

lynx 是一個在可尋址光標字符單元終端cursor-addressable character cell terminals上使用的基於文本的高度可配的 web 瀏覽器,它是最古老的 web 瀏覽器而且如今仍在活躍開發。

# lynx -head -dump http://www.magesh.co.in

HTTP/1.1 200 OK
Date: Fri, 15 Nov 2019 08:14:23 GMT
Content-Type: text/html
Connection: close
Set-Cookie: __cfduid=df3cb624024b81df7362f42ede71300951573805662; expires=Sat, 1
4-Nov-20 08:14:22 GMT; path=/; domain=.magesh.co.in; HttpOnly
Vary: Accept-Encoding
Last-Modified: Sun, 14 Jun 2015 11:52:38 GMT
X-Cache: HIT from Backend
CF-Cache-Status: DYNAMIC
Server: cloudflare
CF-RAY: 535fc5704a43e694-LHR
複製代碼

若是你只想看 HTTP 狀態碼而不是返回的所有結果,用下面的 lynx 命令:

# lynx -head -dump https://www.magesh.co.in 2>&1 | awk '/HTTP\// {print $2}'
 200
複製代碼

若是你想看一個網站是否宕機,用下面的 bash 腳本:

# vi lynx-url-check.sh

#!/bin/bash
if lynx -head -dump http://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 lynx-url-check.sh

HTTP/1.1 200 OK
magesh.co.in is up
複製代碼

若是你想看多個網站的狀態,使用下面的 shell 腳本:

# vi lynx-url-check-1.sh

#!/bin/bash
for site in http://www.google.com https://google.co.in http://www.xyzzz.com
do
if lynx -head -dump "$site" 2>&1 | grep -w "200\|301" ; then
    echo "$site is up"
else
    echo "$site is down"
fi
echo "----------------------------------"
done
複製代碼

當你把上面腳本內容添加到一個文件後,執行文件,查看結果:

# sh lynx-url-check-1.sh

HTTP/1.0 200 OK
http://www.google.com is up
----------------------------------
HTTP/1.0 301 Moved Permanently
https://google.co.in is up
----------------------------------
www.xyzzz.com is down
----------------------------------
複製代碼

方法 6:使用 ping 命令檢測一個網站是否宕機

ping 命令(Packet Internet Groper)是網絡工具的表明,用於在互聯網協議(IP)的網絡中測試一個目標主機是否可用/可鏈接。經過向目標主機發送 ICMP 迴應請求報文包並等待 ICMP 迴應響應報文來檢測主機的可用性。它基於已發送的包、接收到的包和丟失了的包來統計結果數據,一般包含最小/平均/最大響應時間。

# ping -c 5 2daygeek.com

PING 2daygeek.com (104.27.157.177) 56(84) bytes of data.
64 bytes from 104.27.157.177 (104.27.157.177): icmp_seq=1 ttl=58 time=228 ms
64 bytes from 104.27.157.177 (104.27.157.177): icmp_seq=2 ttl=58 time=227 ms
64 bytes from 104.27.157.177 (104.27.157.177): icmp_seq=3 ttl=58 time=250 ms
64 bytes from 104.27.157.177 (104.27.157.177): icmp_seq=4 ttl=58 time=171 ms
64 bytes from 104.27.157.177 (104.27.157.177): icmp_seq=5 ttl=58 time=193 ms

--- 2daygeek.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 13244ms
rtt min/avg/max/mdev = 170.668/213.824/250.295/28.320 ms
複製代碼

附加 1:使用 telnet 命令檢測一個網站是否宕機

telnet 命令是一個使用 TELNET 協議用於 TCP/IP 網絡中多個主機相互通訊的古老的網絡協議。它經過 23 端口鏈接其餘設備如計算機和網絡設備。telnet 是不安全的協議,如今因爲用這個協議發送的數據沒有通過加密可能被黑客攔截,因此不推薦使用。你們都使用通過加密且很是安全的 SSH 協議來代替 telnet

# telnet google.com 80

Trying 216.58.194.46…
Connected to google.com.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
複製代碼

附加 2:使用 bash 腳本檢測一個網站是否宕機

簡而言之,一個 shell 腳本 就是一個包含一系列命令的文件。shell 從文件讀取內容按輸入順序逐行在命令行執行。爲了讓它更有效,咱們添加一些條件。這也減輕了 Linux 管理員的負擔。

若是你想一想用 wget 命令看多個網站的狀態,使用下面的 shell 腳本:

# vi wget-url-check-2.sh

#!/bin/bash
for site in www.google.com google.co.in www.xyzzz.com
do
if wget --spider -S "$site" 2>&1 | grep -w "200\|301" > /dev/null ; then
    echo "$site is up"
else
    echo "$site is down"
fi
done
複製代碼

當你把上面腳本內容添加到一個文件後,執行文件,查看結果:

# sh wget-url-check-2.sh

www.google.com is up
google.co.in is up
www.xyzzz.com is down
複製代碼

若是你想用 wget 命令看多個網站的狀態,使用下面的 shell 腳本

# vi curl-url-check-2.sh

#!/bin/bash
for site in www.google.com google.co.in www.xyzzz.com
do
if curl -I "$site" 2>&1 | grep -w "200\|301" > /dev/null ; then
    echo "$site is up"
else
    echo "$site is down"
fi
done
複製代碼

當你把上面腳本內容添加到一個文件後,執行文件,查看結果:

# sh curl-url-check-2.sh

www.google.com is up
google.co.in is up
www.xyzzz.com is down
複製代碼

via: www.2daygeek.com/linux-comma…

做者:Magesh Maruthamuthu 選題:lujun9972 譯者:lxbwolf 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章
相關標籤/搜索