标签 ping 下的文章

在本文中,我们将讨论网络连接最基本的诊断工具之一:ping 命令。

如今,联网计算机变得十分普遍,以至于我们大多数人都理所当然地认为,房间一侧的计算机可以连接上房间另一侧的计算机,更不用说能连接上世界的另一端的计算机了。如此,网络使互联网、云、文件共享、媒体流、远程管理、打印等服务成为可能。但是当网络出现问题时,有时很难诊断到底是其中哪一环节出现了问题。下面,我们就来介绍:网络连接最基本的诊断工具之一—— ping 命令。

基本的 ping 命令

当你无法访问本地网络上的计算机或互联网上的服务器时,你可以 ping 它的 IP 地址。ping 互联网控制报文协议 Internet Control Message Protocol (ICMP)数据包发送到目标 IP 地址。当我们要对网路连接状况进行判断时,ICMP 是个非常有用的协议,本质上 ICMP 是一个响应和应答信号。

让我们由近及远地进行故障排除。请先 ping 你自己的计算机,以确保你的计算机正在运行 网络栈 networking stack 。你正在操作的计算机称为 主机 localhost ,本地回环地址是:127.0.0.1

ping 命令能用主机的 主机名 hostname 、IP 地址(即 127.0.0.1)或者仅仅用简写 0 来表示 “主机”。

你可以使用 -c 选项,来控制发送数据包的 次数 count

$ ping 0 -c 1
PING 0 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.069 ms

--- 0 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.069/0.069/0.069/0.000 ms

在你确认本地网络栈已启动并运行后,接下来,你可以 ping 你的路由器的 IP 地址。路由器的 IP 地址通常以 192.16810 开头。实际的 IP 地址取决于路由器的配置。

当你没有指定要发送多少次请求时,你可以用 Ctrl+C,来终止 ping 的运行。

$ ping 192.168.0.1 
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
From 192.168.0.100: icmp_seq=2 Redirect Host(New nexthop: 192.168.0.1)
From 192.168.0.100: icmp_seq=3 Redirect Host(New nexthop: 192.168.0.1)
From 192.168.0.100: icmp_seq=4 Redirect Host(New nexthop: 192.168.0.1)
From 192.168.0.100: icmp_seq=5 Redirect Host(New nexthop: 192.168.0.1)
^C

如果你能 ping 通路由器,则表示你的有线或无线连接能正常工作。

对于你的局域网上的其他主机呢?你可以 ping 各种设备,但是并非所有设备都能保证响应,因为一些设备会丢弃 ICMP 数据包,但许多设备会做出响应。例如,我可以 ping 我的打印机:

$ ping 192.168.0.4 

ping 路由器以外的其他服务器

在确定你自己的网络内部都能连通以后,你还可以 ping 通到路由器以外的其他服务器。同样地,并非所有服务器都能接收 ICMP 数据包,更不用说响应 ICMP 数据包了。然而,也有一些服务器可以接收并响应 ICMP 数据包,而在互联网中的一个重要服务器是 域名服务器 nameserver

谷歌的 域名解析服务器 DNS server 的 IP 地址很容易记住,而且它会响应 ping 请求:

$ ping -c 2 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=53.3 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=53.5 ms

--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 53.304/53.424/53.544/0.120 ms

当你连不上一个网站时,你可以查询全球 DNS 网络,以找出其主机服务器的地址,然后 ping 该服务器。这至少可以告诉你,网站不通的原因是主机已关闭,或者只是 Web 服务器问题。

例如,假设你尝试访问 example.com,但是发现失败了。首先,使用 host 命令找到 example.com 的 IP 地址:

$ host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
example.com mail is handled by 0

然后,ping 该网站的的 IP 地址:

$ ping 93.184.216.34 -c 1

使用 IPv6

ping 不仅可以使用 IPv4,还能使用 IPv6。可以通过指定 -4-6 选项,来只使用 IPv4 或 IPv6。

设置数据包大小

你可以使用 -s 选项,来更改要发送的 ICMP 数据包的 大小 size 。默认的数据大小为 56 字节,加上 8 字节包头,总共得到 64 字节的 ICMP 数据包。以下的示例将发送的 ICMP 数据包大小修改为 35+8=43 个字节:

$ ping -s 35 -c 5 8.8.8.8

你可以使用 -D 选项,使得在终端中的每个 ping 回复之前,先打印出当前的时间戳。该时间戳为 UNIX 时间戳,加上微秒:

$ ping -D 8.8.8.8 
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
[1634013430.297468] 64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=53.3 ms
[1634013431.298738] 64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=53.1 ms

设置时间间隔/长短

你可以使用 -i 选项,来更改两次 ping 请求之间的 时间间隔 interval 。以下的示例将 ping 间隔更改为 2 秒:

$ ping -i 2 

你也可以使用 -w 选项,来在一段时间后终止 ping,单位为秒。

$ ping -w 6

ping 的变体

ping 有很多变体。例如,iputils 包提供了 ping 命令;Busybox 也有ping 命令;BSD 也有;甚至还有一个图形界面的 pinggping,它可用于 Linux、macOS 和 Windows。你可以在 GitHub 上找到更多有关 gping 的信息。

一起来学习吧

ping 命令很简单,但它可以帮你诊断网络连接问题。下次再遇到网络连接问题时,让 ping 命令成为你解决问题的第一个工具吧。


via: https://opensource.com/article/21/10/linux-ping-command

作者:Seth Kenlon 选题:lujun9972 译者:chai001125 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本教程教你怎样在 Linux 终端快速检测一个网站是否宕机。

你可能已经了解了一些类似的命令,像 pingcurlwget。我们在本教程中又加入了一些其他命令。同时,我们也加入了不同的选项来检测单个和多个主机的信息。

本文将帮助你检测网站是否宕机。但是如果你在维护一些网站,希望网站宕掉时得到实时的报警,我推荐你去使用实时网站监控工具。这种工具有很多,有些是免费的,大部分收费。根据你的需求,选择合适的工具。在后续的文章中我们会涉及这个主题。

方法 1:使用 fping 命令检测一个网站是否宕机

fping 命令 是一个类似 ping 的程序,使用互联网控制消息协议(ICMP)的 回应请求报文 echo request 来判断目标主机是否能回应。fpingping 的不同之处在于它可以并行地 ping 任意数量的主机,也可以从一个文本文件读入主机名称。fping 发送一个 ICMP 回应请求后不等待目标主机响应,就以轮询模式向下一个目标主机发请求。如果一个目标主机有响应,那么它就被标记为存活的,然后从检查目标列表里去掉。如果一个目标主机在限定的时间和(或)重试次数内没有响应,则被指定为网站无法到达的。

# 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 服务器进行测试、调试和基本的交互。

# 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、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.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

当你把脚本内容添加到一个文件后,执行文件,查看结果:

# sh curl-url-check.sh

HTTP/2 200
magesh.co.in 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 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: https://www.2daygeek.com/linux-command-check-website-is-up-down-alive/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:lxbwolf 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本教程介绍了如何在 Linux 终端验证域名或计算机名的 IP 地址。本教程将允许你一次检查多个域。你可能已经使用过这些命令来验证信息。但是,我们将教你如何有效使用这些命令在 Linux 终端中识别多个域的 IP 地址信息。

可以使用以下 5 个命令来完成此操作。

  • dig 命令:它是一个用于查询 DNS 名称服务器的灵活命令行工具。
  • host 命令:它是用于执行 DNS 查询的简单程序。
  • nslookup 命令:它用于查询互联网域名服务器。
  • fping 命令:它用于向网络主机发送 ICMP ECHO\_REQUEST 数据包。
  • ping 命令:它用于向网络主机发送 ICMP ECHO\_REQUEST 数据包。

为了测试,我们创建了一个名为 domains-list.txt 的文件,并添加了以下域。

# vi /opt/scripts/domains-list.txt

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

方法 1:如何使用 dig 命令查找域的 IP 地址

dig 命令代表 “ 域名信息抓手 Domain Information Groper ”,它是一个功能强大且灵活的命令行工具,用于查询 DNS 名称服务器。

它执行 DNS 查询,并显示来自查询的名称服务器的返回信息。大多数 DNS 管理员使用 dig 命令来解决 DNS 问题,因为它灵活、易用且输出清晰。

它还有批处理模式,可以从文件读取搜索请求。

# dig 2daygeek.com | awk '{print $1,$5}'

2daygeek.com. 104.27.157.177
2daygeek.com. 104.27.156.177

使用以下 bash 脚本查找多个域的 IP 地址。

# vi /opt/scripts/dig-command.sh

#!/bin/bash
for server in `cat /opt/scripts/domains-list.txt`
do echo $server "-"
dig $server +short
done | paste -d " " - - -

添加以上内容到脚本后,给 dig-command.sh 文件设置可执行权限。

# chmod +x /opt/scripts/dig-command.sh

最后运行 bash 脚本获得输出。

# sh /opt/scripts/dig-command.sh

2daygeek.com - 104.27.156.177 104.27.157.177
magesh.co.in - 104.18.35.52 104.18.34.52
linuxtechnews.com - 104.27.144.3 104.27.145.3

如果要在一行中运行上面的脚本,请使用以下脚本。

# for server in 2daygeek.com magesh.co.in linuxtechnews.com; do echo $server "-"; dig $server +short; done | paste -d " " - - -

或者,你可以使用以下 Shell 脚本查找多个域的 IP 地址。

# for server in 2daygeek.com magesh.co.in linuxtechnews.com; do dig $server | awk '{print $1,$5}'; done

2daygeek.com. 104.27.157.177
2daygeek.com. 104.27.156.177
magesh.co.in. 104.18.34.52
magesh.co.in. 104.18.35.52
linuxtechnews.com. 104.27.144.3
linuxtechnews.com. 104.27.145.3

方法 2:如何使用 host 命令查找域的 IP 地址

host 命令是一个简单的命令行程序,用于执行 DNS 查询。它通常用于将名称转换为 IP 地址,反之亦然。如果未提供任何参数或选项,host 将打印它的命令行参数和选项摘要。

你可以在 host 命令中添加特定选项或记录类型来查看域中的所有记录类型。

# host 2daygeek.com | grep "has address" | sed 's/has address/-/g'

2daygeek.com - 104.27.157.177
2daygeek.com - 104.27.156.177

使用以下 bash 脚本查找多个域的 IP 地址。

# vi /opt/scripts/host-command.sh

for server in `cat /opt/scripts/domains-list.txt`
do host $server | grep "has address" | sed 's/has address/-/g'
done

添加以上内容到脚本后,给 host-command.sh 文件设置可执行权限。

# chmod +x /opt/scripts/host-command.sh

最后运行 bash 脚本获得输出。

# sh /opt/scripts/host-command.sh

2daygeek.com - 104.27.156.177
2daygeek.com - 104.27.157.177
magesh.co.in - 104.18.35.52
magesh.co.in - 104.18.34.52
linuxtechnews.com - 104.27.144.3
linuxtechnews.com - 104.27.145.3

方法 3:如何使用 nslookup 命令查找域的 IP 地址

nslookup 命令是用于查询互联网域名服务器(DNS)的程序。

nslookup 有两种模式,分别是交互式和非交互式。交互模式允许用户查询名称服务器以获取有关各种主机和域的信息,或打印域中的主机列表。非交互模式用于仅打印主机或域的名称和请求的信息。

它是一个网络管理工具,可以帮助诊断和解决 DNS 相关问题。

# nslookup -q=A 2daygeek.com | tail -n+4 | sed -e '/^$/d' -e 's/Address://g' | grep -v 'Name|answer' | xargs -n1

104.27.157.177
104.27.156.177

使用以下 bash 脚本查找多个域的 IP 地址。

# vi /opt/scripts/nslookup-command.sh

#!/bin/bash
for server in `cat /opt/scripts/domains-list.txt`
do echo $server "-"
nslookup -q=A $server | tail -n+4 | sed -e '/^$/d' -e 's/Address://g' | grep -v 'Name|answer' | xargs -n1 done | paste -d " " - - -

添加以上内容到脚本后,给 nslookup-command.sh 文件设置可执行权限。

# chmod +x /opt/scripts/nslookup-command.sh

最后运行 bash 脚本获得输出。

# sh /opt/scripts/nslookup-command.sh

2daygeek.com - 104.27.156.177 104.27.157.177
magesh.co.in - 104.18.35.52 104.18.34.52
linuxtechnews.com - 104.27.144.3 104.27.145.3

方法 4:如何使用 fping 命令查找域的 IP 地址

fping 命令是类似 ping 之类的程序,它使用互联网控制消息协议(ICMP)echo 请求来确定目标主机是否响应。

fpingping 不同,因为它允许用户并行 ping 任意数量的主机。另外,它可以从文本文件输入主机。

fping 发送 ICMP echo 请求,并以循环方式移到下一个目标,并且不等到目标主机做出响应。

如果目标主机答复,那么将其标记为活动主机并从要检查的目标列表中删除;如果目标在特定时间限制和/或重试限制内未响应,那么将其指定为不可访问。

# fping -A -d 2daygeek.com magesh.co.in linuxtechnews.com

104.27.157.177 (104.27.157.177) is alive
104.18.35.52 (104.18.35.52) is alive
104.27.144.3 (104.27.144.3) is alive

方法 5:如何使用 ping 命令查找域的 IP 地址

ping 命令 数据包互联网抓手 Packet Internet Groper )是一个网络程序,用于测试 Internet 协议(IP)网络上主机的可用性/连接性。

通过向目标主机发送互联网控制消息协议(ICMP)Echo 请求数据包并等待 ICMP Echo 应答来验证主机的可用性。

它基于发送的数据包、接收的数据包、丢失的数据包,通常包含最小/平均/最大时间来汇总统计结果。

# ping -c 2 2daygeek.com | head -2 | tail -1 | awk '{print $5}' | sed 's/[(:)]//g'

104.27.157.177

使用以下 bash 脚本查找多个域的 IP 地址。

# vi /opt/scripts/ping-command.sh

#!/bin/bash
for server in `cat /opt/scripts/domains-list.txt`
do echo $server "-"
ping -c 2 $server | head -2 | tail -1 | awk '{print $5}' | sed 's/[(:)]//g'
done | paste -d " " - -

添加以上内容到脚本后,给 ping-command.sh 文件设置可执行权限。

# chmod +x /opt/scripts/ping-command.sh

最后运行 bash 脚本获得输出。

# sh /opt/scripts/ping-command.sh

2daygeek.com - 104.27.156.177
magesh.co.in - 104.18.35.52
linuxtechnews.com - 104.27.144.3

via: https://www.2daygeek.com/linux-command-find-check-domain-ip-address/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Ping Multiple Servers And Show The Output In Top-like Text UI

不久前,我们写了篇关于 fping 的文章,该程序能使我们能够同时 ping 多台主机。与传统的 ping 不同,fping 不会等待一台主机的超时。它使用循环法,这表示它将 ICMP Echo 请求发送到一台主机,然后转到另一台主机,最后一次显示哪些主机开启或关闭。今天,我们将讨论一个名为 pingtop 的类似程序。顾名思义,它会一次 ping 多台服务器,并在类似 top 的终端 UI 中显示结果。它是用 Python 写的自由开源程序。

安装 pingtop

可以使用 pip 安装 pingtoppip 是一个软件包管理器,用于安装用 Python 开发的程序。确保已在 Linux 中安装了 Python 3.7.x 和 pip。

要在 Linux 上安装 pip,请参阅以下链接。

安装 pip 后,运行以下命令安装 pingtop

$ pip install pingtop

现在让我们继续使用 pingtop ping 多个系统。

ping 多台服务器并在类似 top 的终端 UI 中显示

要 ping 多个主机/系统,请运行:

$ pingtop ostechnix.com google.com facebook.com twitter.com

现在,你将在一个漂亮的类似 top 的终端 UI 中看到结果,如下所示。

使用 pingtop ping 多台服务器

建议阅读:

我个人目前没有使用 pingtop 的情况。但我喜欢在这个在文本界面中展示 ping 命令输出的想法。试试看它,也许有帮助。

就是这些了。还有更多好东西。敬请期待!干杯!

资源:


via: https://www.ostechnix.com/ping-multiple-servers-and-show-the-output-in-top-like-text-ui/

作者:sk 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

众所周知,ping 命令可以用来检查目标主机是否可达。使用 ping 命令的时候,会发送一个 ICMP Echo 请求,通过目标主机的响应与否来确定目标主机的状态。如果你经常使用 ping 命令,你可以尝试一下 prettyping。Prettyping 只是将一个标准的 ping 工具增加了一层封装,在运行标准 ping 命令的同时添加了颜色和 unicode 字符解析输出,所以它的输出更漂亮紧凑、清晰易读。它是用 bashawk 编写的自由开源工具,支持大部分类 Unix 操作系统,包括 GNU/Linux、FreeBSD 和 Mac OS X。Prettyping 除了美化 ping 命令的输出,还有很多值得注意的功能。

  • 检测丢失的数据包并在输出中标记出来。
  • 显示实时数据。每次收到响应后,都会更新统计数据,而对于普通 ping 命令,只会在执行结束后统计。
  • 可以灵活处理“未知信息”(例如错误信息),而不搞乱输出结果。
  • 能够避免输出重复的信息。
  • 兼容常用的 ping 工具命令参数。
  • 能够由普通用户执行。
  • 可以将输出重定向到文件中。
  • 不需要安装,只需要下载二进制文件,赋予可执行权限即可执行。
  • 快速且轻巧。
  • 输出结果清晰直观。

安装 Prettyping

如上所述,Prettyping 是一个绿色软件,不需要任何安装,只要使用以下命令下载 Prettyping 二进制文件:

$ curl -O https://raw.githubusercontent.com/denilsonsa/prettyping/master/prettyping

将二进制文件放置到 $PATH(例如 /usr/local/bin)中:

$ sudo mv prettyping /usr/local/bin

然后对其赋予可执行权限:

$ sudo chmod +x /usr/local/bin/prettyping

就可以使用了。

让 ping 的输出清晰易读

安装完成后,通过 prettyping 来 ping 任何主机或 IP 地址,就可以以图形方式查看输出。

$ prettyping ostechnix.com

输出效果大概会是这样:

如果你不带任何参数执行 prettyping,它就会一直运行直到被 ctrl + c 中断。

由于 Prettyping 只是一个对普通 ping 命令的封装,所以常用的 ping 参数也是有效的。例如使用 -c 5 来指定 ping 一台主机的 5 次:

$ prettyping -c 5 ostechnix.com

Prettyping 默认会使用彩色输出,如果你不喜欢彩色的输出,可以加上 --nocolor 参数:

$ prettyping --nocolor ostechnix.com

同样的,也可以用 --nomulticolor 参数禁用多颜色支持:

$ prettyping --nomulticolor ostechnix.com

使用 --nounicode 参数禁用 unicode 字符:

如果你的终端不支持 UTF-8,或者无法修复系统中的 unicode 字体,只需要加上 --nounicode 参数就能轻松解决。

Prettyping 支持将输出的内容重定向到文件中,例如执行以下这个命令会将 prettyping ostechnix.com 的输出重定向到 ostechnix.txt 中:

$ prettyping ostechnix.com | tee ostechnix.txt

Prettyping 还有很多选项帮助你完成各种任务,例如:

  • 启用/禁用延时图例(默认启用)
  • 强制按照终端的格式输出(默认自动)
  • 在统计数据中统计最后的 n 次 ping(默认 60 次)
  • 覆盖对终端尺寸的自动检测
  • 指定 awk 解释器路径(默认:awk
  • 指定 ping 工具路径(默认:ping

查看帮助文档可以了解更多:

$ prettyping --help

尽管 Prettyping 没有添加任何额外功能,但我个人喜欢它的这些优点:

  • 实时统计 —— 可以随时查看所有实时统计信息,标准 ping 命令只会在命令执行结束后才显示统计信息。
  • 紧凑的显示 —— 可以在终端看到更长的时间跨度。
  • 检测丢失的数据包并显示出来。

如果你一直在寻找可视化显示 ping 命令输出的工具,那么 Prettyping 肯定会有所帮助。尝试一下,你不会失望的。


via: https://www.ostechnix.com/prettyping-make-the-output-of-ping-command-prettier-and-easier-to-read/

作者:SK 选题:lujun9972 译者:HankChow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

什么是 ping 工具

在讲述一些关于ping工具真实直观的使用实例前,先让我来介绍一下这个命令行工具及其目的。ping工具通常用来测试一台主机在互联网协议(IP)网络内的可达性。其名字源于主动声纳法——在水下创建一个脉冲声音信号(ping)并侦听周围物体的返回信号。该方法同样生动描述了ping网络工具的工作原理。ping工具对一台主机发送回应请求然后等待ICMP响应。

实践中的ping工具的一些例子:

查询主机的IP地址

有时候你需要得到某一台主机的IP地址,如图一。只需要键入ping命令后面跟上要查询的主机名。

ping www.omgubuntu.com

查询正在使用的ping工具的版本信息

用 -V 选项可以用来查询你手头上ping工具的版本信息。键入下列命令显示正在使用的ping工具的版本信息。

ping -V

正如你从图二见到的,我正在使用的是“ping utility,iputils-sss20101006”

自动退出 ping

当你用‘ping 主机’命令ping一台机器时,ping自己无法停止,你必需按下CTRL+C强行退出,或者你可以用 -c (count)选项指定发送包的数量。使用-c选项,当网络管理员(其实普通用户也可以)发送完指定数量的包之后,无需按CTRL+C,ping进程就会自动停止。

ping -c 13 127.0.0.1

上列的命令发送了13个包到我的本地主机上。

正如你从图三看到的,我并没有按CTRL+C,而ping自动退出了。

指定数据包之间的时间间隔

你知道ping每秒钟发送一个数据包吗?你喜欢快一点还是慢一点?用 -i 选项能指定包之间的时间间隔。用下列命令快速发送或慢速发送包。

每0.13秒发送一个包

ping -i 0.13

每13秒发送一个包

ping -i 13

结合 -i 选项和 -c 选项

ping -c 13 -i 3

总共花费39秒发出13个数据包,数据包的时间间隔为三秒。


via: http://www.unixmen.com/five-examples-ping-utility/

译者:Luoxcat 校对:Mr小眼儿

本文由 LCTT 原创翻译,Linux中国 荣誉推出