我在Linux系統中不允許使用'ping'應用程序(ping:icmp open socket:Operation not permitted)。但是,我正在編寫的腳本(PHP,但如果需要,我可以使用exec()調用任何腳本/程序)需要確定主機是否「活着」。我怎樣才能在不使用'ping'的情況下解決這個問題?從動態語言ping而不使用'ping'
0
A
回答
2
如果ping無法做到這一點,您不能用不同的語言來做到這一點。這裏有一個比喻可以幫助你理解爲什麼。假設文件系統上有一個文件,並且你想要它的內容。您運行cat filename
,它表示cat: filename: Permission denied
。你認爲Perl(或任何其他語言)會比C更好嗎?讓我們嘗試:
#!/usr/bin/perl
use strict;
use warnings;
die "usage: $0 filename" unless @ARGV == 1;
my $filename = shift;
open my $fh, "<", $filename
or die "could not open $filename: $!\n";
print while <$fh>;
當針對該文件運行時,它表示could not open filename: Permission denied
。無論您嘗試使用哪種語言,您都將獲得Operation not permitted
。
也就是說,還有其他方法來確定機器是否還活着。如果已知某臺服務器始終在機器上運行,則可以嘗試連接到該服務器。請注意,您不需要完成連接(例如登錄),只需成功啓動連接即可知道該框已啓動。
0
http://us2.php.net/manual-lookup.php?pattern=socket
但如果你不能打開一個插座,平,這是不可能的,你可以使用任何一種。與您的主機提供商聯繫。
0
PHP手冊爲用戶提供的代碼實現了ping in PHP。不幸的是,它需要root訪問權限,所以你也不太可能使用它。一種選擇是使用捲曲,並期待在由curl_getinfo()返回值:
c = curl_init('http://www.site.com/');
curl_exec($c);
$info = curl_getinfo($ch);
它遠不及等價於平,但仍可能適合您的需求。
1
要執行ping(ICMP),您需要root訪問權限。
你唯一的辦法是做一個TCP或UDP ping。 如果你想要一個例子檢查Cacti代碼,也可以使用hping來爲你做它
1
或者你也可以設置在UNIX上的「ping」程序SUID位;)
相關問題
- 1. 從AppEngine Ping Ping
- 2. Ping通過使用Node.Js不斷ping CMD
- 3. 使用tcpflow和tcpdump ping ping
- 4. 如何使用PHP和curl以與ping相同的方式ping ping ping
- 5. 每ping一次返回ping結果,而不僅僅是最後
- 6. 從bash腳本ping未知主機ping
- 7. 用Ping結果動態更改JLabel
- 8. Ping不起作用
- 9. 龍捲風Websockets不會ping ping
- 10. Ping啓動腳本
- 11. Ping從Java到Erlang
- 12. 猛砸ping狀態腳本
- 13. Ping類不可用於UWP
- 14. 如何使用Perl :: Net :: Ping單線程來ping主機?
- 15. 在c中使用ping#
- 16. 使用Python實現ping
- 17. 如何使用Android BLE「ping」
- 18. 使用Axios作爲Ping
- 19. 使用ping SOCKS服務器?
- 20. 使用Ping時的藍屏
- 21. Ping服務器和Ping客戶端(UDP)
- 22. 爲什麼使用System.Net.NetworkInformation.Ping Ping不存在?
- 23. Ping使用不同的端口
- 24. 爲什麼ping使用ICMP而不是TCP?
- 25. 我想在我的辦公室使用JAVA來ping www.google.com,但它不能ping通
- 26. 用Java高效「Ping」
- 27. 腳本來ping從ping一臺單一的主機名
- 28. 從C++中的系統命令檢索ping時間(ping x.x.x.x -n)
- 29. 從線程ping多個ips時Python ICMP ping實現?
- 30. 活動時網頁ping