如何从命令行检查网络是否可达?


12

SuSE服务器完成启动过程后,我想向我发出咆哮。我收到了这个消息socket_sendto(): unable to write to socket [101]: Network is unreachable in

如何从命令行检查网络是否可访问,并等待网络无法访问?



Linux一线回答是或否,我们是否已连接到Internet :ping -c 1 www.yourtrustedserver.com | grep " 0% packet loss"。这样做是用一个数据包对服务器执行ping操作,并获取字符串“ 0%packet loss”的输出。(0%之前的空格很重要)如果命令返回一行,则说明您已连接,否则未连接。
Eric Leschinski 2013年

Answers:


13

ping 外部主机的连接可能由于多种原因而失败,其中只有少数几个实际上对您自己的网络状态有用。

第一步,打开终端窗口并输入 ip route ls

您应该会看到以下输出:

shadur@equinox:~$ ip route ls
192.168.15.0/24 dev eth0  proto kernel  scope link  src 192.168.15.102 
default via 192.168.15.1 dev eth0 

这表明您的本地网络是eth0具有该地址的以太网连接()192.168.15.0,并且可以在处找到通过其访问Internet其余部分的默认网关192.168.15.1

接下来,您可以尝试访问ping该地址:

shadur@equinox:~$ ping 192.168.15.1
PING 192.168.15.1 (192.168.15.1) 56(84) bytes of data.
64 bytes from 192.168.15.1: icmp_req=1 ttl=255 time=0.352 ms
64 bytes from 192.168.15.1: icmp_req=2 ttl=255 time=0.269 ms
^C
--- 192.168.15.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.269/0.310/0.352/0.045 ms

如果您看到与上述类似的内容,则至少可以使用您自己的本地网络。此时,您可以开始使用更高级的工具,例如traceroute查看到目标的连接可能失败的地方。

但是,在快速谷歌检查一下growl实际应该是什么之后,我感觉到还有其他问题。您能否扩展您的问题,以便向我们提供更多有关您正在尝试执行的操作,如何进行尝试以及完整的错误输出的详细信息?您当前提供给我们的线路突然中断...


3
ip route get 1.2.3.4比做更可靠ip route ls。前者将使除路线外所有已制定的规则生效。这也消除了误读路由表的可能性。
Patrick

3

一种非常简单快捷的方法是使用ping命令。

您只需键入

 $ ping yahoo.com

(或cnn.com或任何其他主机),然后查看是否返回了任何输出。假设主机名可以解析(即dns正在工作)。如果没有,您可以希望提供一个有效的远程系统IP地址/号码,并查看是否可以访问。

这是ping手册页

更新

举个简单的例子,您可以检查from 的返回值(例如使用"echo $?"),ping以查看命令是否成功(可以始终将命令的输出通过管道传递给> /dev/nul)。注意我-c 1在这里使用,但是您可以使用更多。

$ ping -c 1 yahoo.com
PING yahoo.com (72.30.38.140) 56(84) bytes of data.
64 bytes from ir1.fp.vip.sp2.yahoo.com (72.30.38.140): icmp_seq=1 ttl=52 time=83.5 ms

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

echo $?
0


$ ping -c 1 unicorns.are.here
ping: unknown host unicorns.are.here

$ echo $?
2

但是,如何使用ping知道一切正常?
Radek

1
@Radek您是否尝试过运行它?ping会告诉您是否得到答复。
2012年

如果服务器仅在Intranet上并且无法访问外界怎么办?
Radek

@ jw013:我没有尝试过...我不知道在无人值守的脚本中使用ping。
Radek

3
@Radek非常简单。我认为“连接性”是指它可以与Intranet上的其他主机通信。因此ping -c 2 -n <other host's IP>,对返回代码运行并操作:如果为true(0),则它具有连接性;如果为假(1),则无法与该计算机通信。
lxop 2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.