2013-04-11 63 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