在python和bash中处理IP和端口
作者:互联网
使用python和bash,我想完成两件事:
>需要将[fec2 :: 10]:80格式的ipv6地址和端口组合拆分为fec2 :: 10和80.
>鉴于IP地址和端口组合,我需要确定IP是v4还是v6地址.例如:1.2.3.4:80和[fec2 :: 10]:80
请建议一种方法来做到这一点.
谢谢!
示例代码:
#!/usr/bin/env python
import optparse
def main():
server = "[fec1::1]:80"
if server.find("[", 0, 2) == -1:
print "IPv4"
ip, port = server.split(':')
else:
print "IPv6"
new_ip, port = server.rsplit(':', 1)
print new_ip
ip = new_ip.strip('[]')
print ip
print port
if __name__ == '__main__':
main()
这适用于所有情况,除非在没有端口的情况下指定输入.例如:10.78.49.50和[fec2 :: 10]
有什么建议可以解决吗?
解决方法:
假设your_input类似于“[fec2 :: 10]:80”或“1.2.3.4:80”,很容易拆分端口并找出ip地址:
#!/usr/bin/env python3
from ipaddress import ip_address
ip, separator, port = your_input.rpartition(':')
assert separator # separator (`:`) must be present
port = int(port) # convert to integer
ip = ip_address(ip.strip("[]")) # convert to `IPv4Address` or `IPv6Address`
print(ip.version) # print ip version: `4` or `6`
标签:python,bash,ip-address 来源: https://codeday.me/bug/20190831/1772627.html