从 argv 获取 IP 失败

Get IP from argv fail

我正在尝试从 args 获取网站的 IP 地址。当我直接在源代码中尝试使用该网站时,如 'url='https://google.com' 它有效,但当我尝试使用 'url = sys.argv[1]' 时它失败了。

当我打印 'url = sys.argv[1]' 时,我得到了所需的网站。我试着 str(url) 它,但它也不起作用。

代码如下:

import socket
import sys

# Params
url = sys.argv[1]
# url = str(sys.argv[1])

print (type(url))   # I get the desired url

s = socket.socket()

# Get IP
ip = socket.gethostbyname(url)

# Print Infos
print ('IP Adress : ' + ip + '\n' + 15*'-')

s.close()

你有什么想法吗?

谢谢,这让我发疯。

这是因为你传入了 https//:;你需要删除它:

In [3]: ip = socket.gethostbyname("http://google.com")
---------------------------------------------------------------------------
gaierror                                  Traceback (most recent call last)
<ipython-input-3-7466d856e904> in <module>()
----> 1 ip = socket.gethostbyname("http://google.com")

相反,尝试:

In [4]: ip = socket.gethostbyname("google.com")

In [5]: ip
Out[5]: '172.217.25.238'

请注意,您还需要删除任何尾部斜杠,例如,删除 google.com/ 中的 /

如果您查看 man gethostbyname,您会发现您正在发出 DNS 请求:

The gethostbyname() function returns a structure of type hostent for the given host name. Here name is either a hostname or an IPv4 address in standard dot notation (as for inet_addr(3)).

因此,您需要确保清除传递给该函数调用的所有内容。