2013-04-11 37 views
4

我想查看ec2实例是否打开,但默认情况下,Amazon ec2会阻止ping请求。有一种方法可以通过更改实例的安全策略来实现。除此之外,什么是“看看服务器是否响应”并且重量轻的最接近的替代方案。替代ping

curl是不错的选择?

回答

6

我认为curl正是你想要的。像所有的乖巧UNIX程序,它如果出现任何错误返回错误代码:

[[email protected] ~]$ curl www.no-such-website.com 
[[email protected] ~]$ echo $? 
6 

你也可能需要使用--connect-timeout,以确保它不会永远等待。

+0

谢谢,我会用它。出于好奇,“6”是什么意思作为错误代码? – David542 2013-04-11 22:00:27

+0

@ David542它是'卷曲'特有的。每个程序都会选择要返回的内容,而且几乎没有标准化。如果你真的感兴趣,你可以找一个名为'sysexits.h'的头文件。但手册页确实解释了退出代码。 'curl'手册页中的 – cnicutar 2013-04-11 22:01:21

+0

:'6无法解析主机。给定的远程主机没有解决.' – dschulz 2013-04-11 22:21:20

4

如果服务器启动并且Web服务器守护程序关闭,CURL将不能用作快速检查。一种替代方法是使用hping3等工具发送TCP ACK。如果您获得RST,则服务器已启动。

hping3 -c 1 -V -p 80 -s 5050 -A example.fqdn 

你可以做的是尽量卷曲测试第一,失败尝试第二种方法,以确认该服务器已关闭并不仅仅是Web服务器守护程序。

这种方法的问题是像这样的一个流氓TCP数据包可能被中间代理过滤。

+0

确定它会工作。如果Web服务器守护程序关闭,则该框将回复TCP RST或根本没有任何内容(将由超时捕获)。无论如何,如果在指定的时间内没有回应,“卷曲”就会知道。 – cnicutar 2013-04-11 22:25:59

+0

好的,那是真的。使用hping3获得RST的速度比等待指数SYN重新传输回退超时要快得多。比较curl和各种测试(不存在的主机,主机,下行端口等)的hping测试。它通常更快。 – jman 2013-04-11 22:30:39

1

如果你可以SSH的话,那么它已经到了。用nc检查这个的简单方法是: nc -zv 111.222.333.444 22 (用您的实例的ip地址替换111.222.333.444)

+0

谢谢,netcat和ping有什么区别?另外,上述命令在当前格式下不起作用。 – David542 2013-04-12 18:19:26

+0

该命令正​​常工作,我在发布之前对其进行了测试。你会得到什么错误? – 2013-04-13 03:07:43