我想查看ec2实例是否打开,但默认情况下,Amazon ec2会阻止ping请求。有一种方法可以通过更改实例的安全策略来实现。除此之外,什么是“看看服务器是否响应”并且重量轻的最接近的替代方案。替代ping
是curl
是不错的选择?
我想查看ec2实例是否打开,但默认情况下,Amazon ec2会阻止ping请求。有一种方法可以通过更改实例的安全策略来实现。除此之外,什么是“看看服务器是否响应”并且重量轻的最接近的替代方案。替代ping
是curl
是不错的选择?
我认为curl
正是你想要的。像所有的乖巧UNIX程序,它如果出现任何错误返回错误代码:
[[email protected] ~]$ curl www.no-such-website.com
[[email protected] ~]$ echo $?
6
你也可能需要使用--connect-timeout
,以确保它不会永远等待。
如果服务器启动并且Web服务器守护程序关闭,CURL将不能用作快速检查。一种替代方法是使用hping3
等工具发送TCP ACK。如果您获得RST,则服务器已启动。
hping3 -c 1 -V -p 80 -s 5050 -A example.fqdn
你可以做的是尽量卷曲测试第一,失败尝试第二种方法,以确认该服务器已关闭并不仅仅是Web服务器守护程序。
这种方法的问题是像这样的一个流氓TCP数据包可能被中间代理过滤。
如果你可以SSH的话,那么它已经到了。用nc检查这个的简单方法是: nc -zv 111.222.333.444 22 (用您的实例的ip地址替换111.222.333.444)
谢谢,netcat和ping有什么区别?另外,上述命令在当前格式下不起作用。 – David542 2013-04-12 18:19:26
该命令正常工作,我在发布之前对其进行了测试。你会得到什么错误? – 2013-04-13 03:07:43
谢谢,我会用它。出于好奇,“6”是什么意思作为错误代码? – David542 2013-04-11 22:00:27
@ David542它是'卷曲'特有的。每个程序都会选择要返回的内容,而且几乎没有标准化。如果你真的感兴趣,你可以找一个名为'sysexits.h'的头文件。但手册页确实解释了退出代码。 'curl'手册页中的 – cnicutar 2013-04-11 22:01:21
:'6无法解析主机。给定的远程主机没有解决.' – dschulz 2013-04-11 22:21:20