从 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)
).
因此,您需要确保清除传递给该函数调用的所有内容。
我正在尝试从 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 forinet_addr(3)
).
因此,您需要确保清除传递给该函数调用的所有内容。