好吧,是时候问一个非常愚蠢/明显的问题了。我需要使用 ICMP 协议 ping 网络服务器/网站以查看其是否有效。你知道...
ping facebook.com
。我的代码生成一堆 TLD 和用户输入域名的子域。我计划对所有这些(通常约为 6 个)进行 ping 操作,看看它们是否确实有效,然后再对它们进行我需要做的事情。然而,所有与我类似的教程和问题都是 2010 年的,现在已经不起作用了。我要做的一件事就是打印出 ping 的结果,这是我不想要的。所以也许像下面这样的某种函数,它只是返回或打印出它是否在线而不是实际响应(如果有意义的话):
def website_checker():
if os.system("ping facebook.com"):
print("facebook.com is valid")
else:
print("facebook.com is not valid")
我不确定这是否有帮助,但我无法用更好的语言来表达。拜托,我要拔头发了
感谢@Moanos 的帮助,我想通了!这是代码:
from icmplib import ping
def host_up(hostname:str):
host = ping(hostname, count=5, interval=0.2)
return host.packets_sent == host.packets_received
hosts = "facebook.gov"
try:
if host_up(hosts):
print(f"{hosts} is valid")
except:
print(f"{hosts} is not valid")
所以该函数是@Moanos 的代码,但其余的是我的。我使用 try, except 块的原因是为了防止打印出 NameLookupError!因此,当它有效时,它仅表示它是有效的,并且当它不是有效域时情况相同。
您可以使用 ping lib 来进行 ping。
import ping, socket
try:
ping.verbose_ping('www.google.com', count=3)
delay = ping.Ping('www.wikipedia.org', timeout=2000).do()
except socket.error, e:
print "Ping Error:", e
您可以使用icmplib。以下代码尝试 ping
host
,如果 DNS 查找成功并且主机响应所有 ping,则返回 True
。
from icmplib import ping
from icmplib.exceptions import NameLookupError
def host_up(hostname: str):
try:
host = ping(hostname, count=5, interval=0.2, timeout=1, privileged=False)
except NameLookupError:
return False
return host.packets_sent == host.packets_received
visit = "facebook.com"
if host_up(visit):
print(f"{visit} is valid")
else:
print(f"{visit} is not valid")